{
  "openapi": "3.0.1",
  "info": {
    "title": "Documentation ProductService",
    "description": "",
    "version": "1.1"
  },
  "servers": [
    {
      "url": "https://customer-slug.api-se.norce.tech/commerce/product/1.1"
    }
  ],
  "paths": {
    "/ListAssortments": {
      "get": {
        "tags": [
          "Assortments"
        ],
        "summary": "List product assortments",
        "description": "Reference list of Product Assortments.",
        "operationId": "ListAssortments",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListCategories": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List categories (abbreviated)",
        "description": "Lists categories as defined in Storm. Used for lookup.",
        "operationId": "ListCategories",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListCategoryItems": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List categories",
        "description": "Navigational structure.",
        "operationId": "ListCategoryItems",
        "parameters": [
          {
            "name": "categoryStructureId",
            "in": "query",
            "description": "Specifies which category structure to use. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "level",
            "in": "query",
            "description": "If supplied, only returns structure nodes of specified level.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "If supplied, only returns child nodes of specified parent node.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CategoryItem"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CategoryItem"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListCategoryItemsByPricelists": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List categories by pricelists",
        "description": "Lists categories as defined by the products on the priceLists in Storm.",
        "operationId": "ListCategoryItemsByPricelists",
        "parameters": [
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "Accepts a comma separated string of pricelist internal ids.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categoryStructureId",
            "in": "query",
            "description": "Specifies which category structure to use. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "level",
            "in": "query",
            "description": "If supplied, only returns structure nodes of specified level.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "If supplied, only returns child nodes of specified parent node.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CategoryItem"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CategoryItem"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/SearchCategories": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "Search categories",
        "operationId": "SearchCategories",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "The string to search for. Searchable fields are code, name, synonyms and unspsc code.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListConfigurationItems": {
      "get": {
        "tags": [
          "Configurations"
        ],
        "summary": "List configuration items",
        "description": "Lists all configuration items for the supplied list of partNos. The list will contain an item for each partNo.",
        "operationId": "ListConfigurationItems",
        "parameters": [
          {
            "name": "partNoSeed",
            "in": "query",
            "description": "A comma separated list of partNos for which to fetch all configuration items.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConfigurationItem"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConfigurationItem"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListFamilies": {
      "get": {
        "tags": [
          "Families"
        ],
        "summary": "List families",
        "description": "Lists product families.",
        "operationId": "ListFamilies",
        "parameters": [
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status IDs. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment IDs. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList IDs to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Family"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Family"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListFileTypeIds": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "List file types",
        "description": "Reference list of Product file type ids.",
        "operationId": "ListFileTypeIds",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductFilters": {},
    "/ListProductFilters2": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List product filters (v2)",
        "description": "Retrieves available filters for ListProduct",
        "operationId": "ListProductFilters2",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string. Minimum of 2 characters required.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductFiltersByCustomer": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List product filters by customer",
        "description": "Retrieves available filters for product list based on customer priceLists.",
        "operationId": "ListProductFiltersByCustomer",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductFiltersByIds": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List product filters by product ids",
        "description": "Retrieves available filters for product list based on product ids.",
        "operationId": "ListProductFiltersByIds",
        "parameters": [
          {
            "name": "idSeed",
            "in": "query",
            "description": "Accepts a comma separated string of product internal ids.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductFiltersByNode": {},
    "/ListProductFiltersByNode2": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List product filters by node (v2)",
        "description": "Retrieves available filters for ListProduct by Navigation Node.",
        "operationId": "ListProductFiltersByNode2",
        "parameters": [
          {
            "name": "nodeKey",
            "in": "query",
            "description": "Key from NavigationNode.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductFiltersByPricelist": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List product filters by pricelist",
        "description": "Retrieves available filters for product list based on priceLists.",
        "operationId": "ListProductFiltersByPricelist",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Filter"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductItemFilterValues": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List filter values",
        "description": "Returns a list of filter values for products. The list can be used to filter products client side.",
        "operationId": "ListProductItemFilterValues",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductItemFilterValuesByCustomer": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List filter values by customer",
        "description": "Returns a list of filter values for product list. The list can be used to filter products client side.",
        "operationId": "ListProductItemFilterValuesByCustomer",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductItemFilterValuesById": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List filter values by specific product",
        "description": "Returns a list of filter values for the product id. The list can be used to filter products client side.",
        "operationId": "ListProductItemFilterValuesById",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Accepts an integer product internal id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductItemFilterValuesByIds": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List filter values by product ids",
        "description": "Returns a list of filter values for products. The list can be used to filter products client side.",
        "operationId": "ListProductItemFilterValuesByIds",
        "parameters": [
          {
            "name": "idSeed",
            "in": "query",
            "description": "Accepts a comma separated string of product internal ids.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductItemFilterValuesByNode": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "List filter values by node",
        "description": "Returns a list of filter values for products. The list can be used to filter products client side.",
        "operationId": "ListProductItemFilterValuesByNode",
        "parameters": [
          {
            "name": "nodeKey",
            "in": "query",
            "description": "Key from NavigationNode.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Sample: Field1 Asc, Field2 Desc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductItemFilterValues"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListFlagGroups": {
      "get": {
        "tags": [
          "Flags"
        ],
        "summary": "List product flag groups",
        "operationId": "ListFlagGroups",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlagGroup"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FlagGroup"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListFlags": {
      "get": {
        "tags": [
          "Flags"
        ],
        "summary": "List product flags",
        "description": "Reference list of Product Flags.",
        "operationId": "ListFlags",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Flag"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Flag"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductFlags": {},
    "/ListOnHandInfoTypes": {
      "get": {
        "tags": [
          "InfoTypes"
        ],
        "summary": "Get info types for availability",
        "description": "Lists the available OnHandInfo types.",
        "operationId": "ListOnHandInfoTypes",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetManufacturer": {
      "get": {
        "tags": [
          "Manufacturers"
        ],
        "summary": "Get a manufacturer",
        "description": "Get a specific manufacturer by internal id.",
        "operationId": "GetManufacturer",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Internal id for manufacturer.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Manufacturer"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/Manufacturer"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetManufacturerByUniqueName": {
      "get": {
        "tags": [
          "Manufacturers"
        ],
        "summary": "Get a manufacturer by unique name",
        "description": "Get a specific manufacturer by unique name.",
        "operationId": "GetManufacturerByUniqueName",
        "parameters": [
          {
            "name": "uniqueName",
            "in": "query",
            "description": "Unique name for the manufacturer.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Manufacturer"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/Manufacturer"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListManufacturers": {
      "get": {
        "tags": [
          "Manufacturers"
        ],
        "summary": "List manufacturers",
        "description": "Main manufacturer list. This function will not calculate ProductCount. Use ListManufacturersEx for that.",
        "operationId": "ListManufacturers",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManufacturerItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ManufacturerItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListManufacturersEx": {
      "get": {
        "tags": [
          "Manufacturers"
        ],
        "summary": "List manufacturers (extended)",
        "description": "Main product list. Same as ListManufacturers but this one will calculate ProductCount.",
        "operationId": "ListManufacturersEx",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string on manufacturer.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status IDs. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment IDs. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManufacturerItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ManufacturerItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/SearchManufacturers": {
      "get": {
        "tags": [
          "Manufacturers"
        ],
        "summary": "Search manufacturers",
        "operationId": "SearchManufacturers",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "The string to search for. Searchable fields are manufacturerCode, orgNo, name and prefix.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetNavigationStructure": {
      "get": {
        "tags": [
          "Navigation"
        ],
        "summary": "Get navigation structure",
        "description": "Gets the NavigationStructure for the Application. The NavigationStructure is used to get the list of NavigationNodes. See IProductService.ListNavigationNodes for more information.",
        "operationId": "GetNavigationStructure",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Specifies id for the navigation structure. If none is supplied, the default structure for the Application is returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NavigationStructure"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/NavigationStructure"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListNavigationNodes": {
      "get": {
        "tags": [
          "Navigation"
        ],
        "summary": "List navigation nodes",
        "description": "Lists the NavigationNodes for the NavigationStructure. See NavigationNode for more information.",
        "operationId": "ListNavigationNodes",
        "parameters": [
          {
            "name": "navigationId",
            "in": "query",
            "description": "Specifies id for the navigation structure.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "descendantOf",
            "in": "query",
            "description": "Specifies the parent hierarchy for the NavigationNodes to list. If none is supplied all nodes will be listed. Sample: /1/",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxRecursions",
            "in": "query",
            "description": "Specifies the number of levels deep to go. If none is supplied all nodes will be listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NavigationNode"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NavigationNode"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListNavigationNodesEx": {
      "get": {
        "tags": [
          "Navigation"
        ],
        "summary": "List navigation nodes (extended)",
        "description": "Lists the NavigationNodes. Same as ListNavigationNodes but this one will calculate ProductCount.",
        "operationId": "ListNavigationNodesEx",
        "parameters": [
          {
            "name": "navigationId",
            "in": "query",
            "description": "Specifies id for the navigation structure.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "descendantOf",
            "in": "query",
            "description": "Specifies the parent hierarchy for the NavigationNodes to list. If none is supplied all nodes will be listed. Sample: /1/",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxRecursions",
            "in": "query",
            "description": "Specifies the number of levels deep to go. If none is supplied all nodes will be listed.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "hideEmptyNodes",
            "in": "query",
            "description": "If set to true only nodes with underlying products will be fetched. If false, all nodes will be fetched. Default value is false.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the product count should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NavigationNode"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NavigationNode"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListNavigationNodeTypeIds": {
      "get": {
        "tags": [
          "Navigation"
        ],
        "summary": "List navigation node types",
        "description": "Lists the available NavigationNode.TypeIds.",
        "operationId": "ListNavigationNodeTypeIds",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetExternalProductOnHandByPartNo": {
      "post": {
        "tags": [
          "OnHand"
        ],
        "summary": "Get product external availability by part number",
        "description": "Checks the actual on hand status in the customers back end system.",
        "operationId": "GetExternalProductOnHandByPartNo",
        "parameters": [
          {
            "name": "partNo",
            "in": "query",
            "description": "Part number of the product to get.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual list of warehouses to check OnHand for. OnHand in Warehouse is ignored.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            },
            "application/xml": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request\n\nKey: RemoteCallFailed. Gets raised when the remote call fails.",
            "content": {}
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "warehouses"
      }
    },
    "/GetExternalProductOnHandByProduct": {
      "post": {
        "tags": [
          "OnHand"
        ],
        "summary": "Get product external availability by id",
        "description": "Checks the actual on hand status in the customers back end system.",
        "operationId": "GetExternalProductOnHandByProduct",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Internal id of the product to get.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual list of warehouses to check OnHand for. OnHand in Warehouse is ignored.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            },
            "application/xml": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request\n\nKey: RemoteCallFailed. Gets raised when the remote call fails.",
            "content": {}
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "warehouses"
      }
    },
    "/GetProductOnHandByPartNo": {
      "post": {
        "tags": [
          "OnHand"
        ],
        "summary": "Get product availability by part number",
        "operationId": "GetProductOnHandByPartNo",
        "parameters": [
          {
            "name": "partNo",
            "in": "query",
            "description": "Part number of the product to get.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual list of warehouses to check OnHand for. OnHand in Warehouse is ignored.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            },
            "application/xml": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "warehouses"
      }
    },
    "/GetProductOnHandByProduct": {
      "post": {
        "tags": [
          "OnHand"
        ],
        "summary": "Get product availability by id",
        "operationId": "GetProductOnHandByProduct",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Internal id of the product to get.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual list of warehouses to check OnHand for. OnHand in Warehouse is ignored.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            },
            "application/xml": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Warehouse"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductOnHand"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "warehouses"
      }
    },
    "/ListFocusParametrics": {
      "get": {
        "tags": [
          "Parametric"
        ],
        "summary": "List category focus parametrics",
        "description": "Available focus parametrics on a category. Focus parametrics is used when filtering a ListProduct result set.",
        "operationId": "ListFocusParametrics",
        "parameters": [
          {
            "name": "categoryId",
            "in": "query",
            "description": "Internal id of category, retrieved from CategoryItem.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IFilterItem"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IFilterItem"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListParametricGroups": {
      "get": {
        "tags": [
          "Parametric"
        ],
        "summary": "List product parametric groups",
        "description": "Lists all parametric groups for the client.",
        "operationId": "ListParametricGroups",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParametricGroup"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParametricGroup"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListParametricInfo": {
      "get": {
        "tags": [
          "Parametric"
        ],
        "summary": "List parametric metadata",
        "description": "Lists metadata for parametric, ParametricInfos.",
        "operationId": "ListParametricInfo",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParametricInfo"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParametricInfo"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListParametricValues": {},
    "/ListParametricValues2": {
      "get": {
        "tags": [
          "Parametric"
        ],
        "summary": "List parametric list values",
        "description": "Reference list of Parametric values.",
        "operationId": "ListParametricValues2",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParametricValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ParametricValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductParametrics": {
      "get": {
        "tags": [
          "Parametric"
        ],
        "summary": "List product parametrics",
        "description": "Lists Product Parametric values for a product. What parametric values are returned is defined in the primary Category of the product, or if no primary exists, the first category by sort order. If the product does not exist or does not have a category an empty list is returned. Sort order of the parametric values is taken from the order defined for the category.",
        "operationId": "ListProductParametrics",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Internal id of the Product.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductParametric"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductParametric"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPricelists": {
      "get": {
        "tags": [
          "PriceLists"
        ],
        "summary": "List pricelists",
        "description": "Lists priceLists for the client.",
        "operationId": "ListPricelists",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Pricelist"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Pricelist"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPricelistTypes": {
      "get": {
        "tags": [
          "PriceLists"
        ],
        "summary": "List pricelist types",
        "description": "Reference list of PriceList Types.",
        "operationId": "ListPricelistTypes",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetProduct": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get a product",
        "description": "Gets a Product and its optional variants by internal id. The main product will be based on the product with the supplied id, status permitting.",
        "operationId": "GetProduct",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The id of the Product. If the product has variants, any id of the variants can be used.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status IDs. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList IDs to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Internal id of company. Checks for specific company bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetProductByPartNo": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get a product by part no",
        "description": "Gets a Product and its optional variants by partNo. The main product will be based on the product with the supplied partNo, status permitting.",
        "operationId": "GetProductByPartNo",
        "parameters": [
          {
            "name": "partNo",
            "in": "query",
            "description": "Part number of the product to get.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/GetProductByUniqueName": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Get a product by unique name",
        "description": "Gets a Product and its optional variants by the uniqueName. The main product will be based on the product with the supplied name, status permitting.",
        "operationId": "GetProductByUniqueName",
        "parameters": [
          {
            "name": "uniqueName",
            "in": "query",
            "description": "Unique name of the product",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/Product"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListBestsellingProducts": {},
    "/ListBestsellingProducts2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List best selling products (v2)",
        "description": "Returns the best selling products based on supplied parameters.",
        "operationId": "ListBestsellingProducts2",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string. Minimum of 2 characters required.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied. If omitted ",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListBestSellingProductsByCompany": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List best selling products by company",
        "description": "Main product list based on best selling items for a company",
        "operationId": "ListBestSellingProductsByCompany",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "Orders from this date will only be included in the calculation. Format: yyyy-mm-ddThh:mm:ss.nnn[z], example 2024-08-01T12:59:59.000Z",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display. Default is 50.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListBestsellingProductsByNode": {},
    "/ListBestsellingProductsByNode2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List best selling products by node (v2)",
        "description": "Returns the best selling products based on supplied parameters by Navigation Node.",
        "operationId": "ListBestsellingProductsByNode2",
        "parameters": [
          {
            "name": "nodeKey",
            "in": "query",
            "description": "Key from NavigationNode.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied. If omitted ",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListHistoricalBestPrices": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List historical best prices",
        "description": "Lists historical best prices for a product going back 30 days.",
        "operationId": "ListHistoricalBestPrices",
        "parameters": [
          {
            "name": "partNo",
            "in": "query",
            "description": "The part number of the Product.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HistoricalBestPrice"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/HistoricalBestPrice"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListIncludedProducts": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products included in structure",
        "description": "Returns a list of included products for structural products. Note that this is on sku level.",
        "operationId": "ListIncludedProducts",
        "parameters": [
          {
            "name": "partNo",
            "in": "query",
            "description": "The partNo of the selected structural product.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids for the included products. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids for the included products. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Not used. The items are returned in the sort order specified by the structure item in Storm.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. Multiple filters are separated by a semi colon. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPopularProducts": {},
    "/ListPopularProducts2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List popular products (v2)",
        "description": "Returns the most popular products based on supplied parameters.",
        "operationId": "ListPopularProducts2",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string. Minimum of 2 characters required.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPopularProductsByNode": {},
    "/ListPopularProductsByNode2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List popular products by node (v2)",
        "description": "Returns the most popular products based on supplied parameters by Navigation Node.",
        "operationId": "ListPopularProductsByNode2",
        "parameters": [
          {
            "name": "nodeKey",
            "in": "query",
            "description": "Key from NavigationNode.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductPriceQtyBreak": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List product quantity break prices",
        "description": "Gets a ProductPriceQtyBreakList. The list contains ProductPrices representing the price for each given minimum quantity bought.",
        "operationId": "ListProductPriceQtyBreak",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The internal id of the Product.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal IDs.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of pricelist internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductPriceQtyBreak"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductPriceQtyBreak"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProducts": {},
    "/ListProducts2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products (v2)",
        "description": "Main product list.",
        "operationId": "ListProducts2",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request\n\nKey: ResultSetTooLargePagingRequired. Gets raised when a result set is too large (> 1000). Set pageNo and pageSize to avoid this.",
            "content": {}
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByCustomer": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by customer",
        "description": "Main product list and prices based on customer priceLists.",
        "operationId": "ListProductsByCustomer",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByFamilies": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by families",
        "description": "Main product list.",
        "operationId": "ListProductsByFamilies",
        "parameters": [
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "familySeed",
            "in": "query",
            "description": "Accepts a comma separated string of family IDs. Lookup references in ListFamilies.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsById": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List product variants by product ids",
        "description": "Returns all variants for the product as a ProductItemList.",
        "operationId": "ListProductsById",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Accepts a comma separated string of Product IDs.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByIds": {},
    "/ListProductsByIds2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by ids (v2)",
        "description": "Main product list.",
        "operationId": "ListProductsByIds2",
        "parameters": [
          {
            "name": "idSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Product IDs.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted. Only specified ids will be returned if returnAllVariants is set to false. Set returnAllVariants to true to return all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnAllVariants",
            "in": "query",
            "description": "Specifies if the result should include all variants or just the specified. Default is false.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByIds3": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by ids (v3)",
        "description": "Main product list.",
        "operationId": "ListProductsByIds3",
        "parameters": [
          {
            "name": "idSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Product IDs.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted. Only specified ids will be returned if returnAllVariants is set to false. Set returnAllVariants to true to return all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnAllVariants",
            "in": "query",
            "description": "Specifies if the result should include all variants or just the specified. Default is false.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByNode": {},
    "/ListProductsByNode2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by node (v2)",
        "description": "Main product list by Navigation Node.",
        "operationId": "ListProductsByNode2",
        "parameters": [
          {
            "name": "nodeKey",
            "in": "query",
            "description": "Key from NavigationNode.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "guid"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByPartNos": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by part numbers",
        "description": "Main product list.",
        "operationId": "ListProductsByPartNos",
        "parameters": [
          {
            "name": "partNoSeed",
            "in": "query",
            "description": "Accepts a comma separated string of partNos.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted. Only specified ids will be returned if returnAllVariants is set to false. Set returnAllVariants to true to return all.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "returnAllVariants",
            "in": "query",
            "description": "Specifies if the result should include all variants or just the specified. Default is false.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByPricelist": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by pricelists",
        "description": "Main product list and prices based on priceLists.",
        "operationId": "ListProductsByPricelist",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByPriceList2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by pricelists (v2)",
        "description": "Main product list (v2) and prices based on priceLists.",
        "operationId": "ListProductsByPriceList2",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categorySeed",
            "in": "query",
            "description": "Accepts a comma separated string of Category internal ids, retrieved from CategoryItem.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "manufacturerSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Manufacturer internal ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "flagSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Flag internal ids. Lookup references in ListFlags.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "An expand option that specifies what expansions should be made on the ProductItem2 entity. Valid values are: None, Variants, Price, OnHand, OnHandStore, OnHandSupplier and Parameters. These can be comma separated. Use Full for all. Default is Full. None will return just the ProductItem without expansions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItem2PagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItem2PagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsByPromotionRequirement": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List products by promotion requirement",
        "description": "Lists all products by promotion requirements.",
        "operationId": "ListProductsByPromotionRequirement",
        "parameters": [
          {
            "name": "promotionId",
            "in": "query",
            "description": "PromotionId. See Shopping.ListPromotions for a List of promotions.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "Page numbers start with 1. Default is 1. If you specify a pageNo outside the range of items, an empty list will be returned. PageSize is mandatory for pageNo to work.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items to display per page. Mandatory if using pageNo.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Property values to filter on. The return value's ItemCount will be the number of items after filters have been applied. General format: 'filterName|value specification'. See Filter.Name for valid values and the different Filter entities for value specifications. Sample: catf|11946,11947;mfrf|7276;ohf|true;flgf|42,46;prcf|true_10-20;parf|L6360_13239*M6355_3387*M6355_3390!V60_256-1024*V70_1.4-1.9. The logical operator between comma separated values in catf, mfrf and flgf is OR while parf values use AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductsInFamilies": {},
    "/ListProductsInFamilies2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "List product in family (v2)",
        "description": "Returns other products in the same family for the current product.",
        "operationId": "ListProductsInFamilies2",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "The internal product id for which family products are listed.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ProductItemPagedList"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListTopProducts": {},
    "/SearchProductsLite": {},
    "/SearchProductsLite2": {
      "get": {
        "tags": [
          "Products"
        ],
        "summary": "Search products light (v2)",
        "description": "Quick search of products, only returns ProductId and Name.",
        "operationId": "SearchProductsLite2",
        "parameters": [
          {
            "name": "searchString",
            "in": "query",
            "description": "Free text search string. Minimum of 2 characters required.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList IDs to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Current Customer.Id, checks for specific customer bound prices.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Current Company ID, checks for specific company bound prices.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductId"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductId"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/UpdateProductViewCount": {
      "post": {
        "tags": [
          "Products"
        ],
        "summary": "Update product view count",
        "description": "Updates the view count for the product. Used when calculating most popular products. Should be called on product detail pages.",
        "operationId": "UpdateProductViewCount",
        "parameters": [
          {
            "name": "categoryId",
            "in": "query",
            "description": "The category internal id for the product.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "productId",
            "in": "query",
            "description": "Product internal id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {}
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPromotionProducts": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List products by promotion effect",
        "description": "Lists all products by promotion effect ChooseProducts(2) or AddProduct(5). This allows the product detail page to display what comes with the main product as promoted products.",
        "operationId": "ListPromotionProducts",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "The main product to find promoted products for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PromotionProducts"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PromotionProducts"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPromotionsByProductId": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List promotions for a specific product",
        "description": "Lists all promotions where the product is either in a requirement or in an effect for the promotion.",
        "operationId": "ListPromotionsByProductId",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The internal id of the Product. If the product has variants, any id of the variants can be used.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShoppingPromotion"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShoppingPromotion"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListPromotionsByProductUniqueName": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List promotions for a specific product by unique name",
        "description": "Lists all promotions where the product is either in a requirement or in an effect for the promotion.",
        "operationId": "ListPromotionsByProductUniqueName",
        "parameters": [
          {
            "name": "uniqueName",
            "in": "query",
            "description": "Unique name of the product to use.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesAreaId",
            "in": "query",
            "description": "Specifies the SalesArea to use. Uses Storm internal ids. If none is supplied, primary SalesArea on Application will be used.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShoppingPromotion"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShoppingPromotion"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListAccessoryTypes": {},
    "/ListProductAccessories": {},
    "/ListProductAccessories2": {},
    "/ListProductAccessories3": {},
    "/ListProductAccessories4": {},
    "/ListProductAccessories5": {},
    "/ListProductCrossSell": {},
    "/ListProductCrossSell2": {},
    "/ListProductCrossSell3": {},
    "/ListProductCrossSell4": {},
    "/ListProductRelations": {
      "get": {
        "tags": [
          "Relations"
        ],
        "summary": "List product relations",
        "description": "Relations connected to a product. Relations are defined as products that customer could choose to buy in addition to the current product. Supports relations like product to product, product to variant, variant to product and variant to variant.",
        "operationId": "ListProductRelations",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Internal id of current Product.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "relationTypeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Type IDs. Lookup references in ListProductRelationTypes. If empty or null, all types will be used.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assortmentSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Assortment internal ids. Lookup references in ListAssortments.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort order as formatted [Property] [Asc/Desc] with comma as separator. Supported properties for sorting on the server are PopularityRank, Name, Price and SortOrder.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Number of items to display.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asVariants",
            "in": "query",
            "description": "Specifies if the output should be grouped as products or as variants. Default is false which returns a list of products. Set to true if variants are wanted.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isForAllVariants",
            "in": "query",
            "description": "Specifies if the result should include all variants or just the one specified as productId. Default is true.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRelations"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductRelations"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductRelationTypes": {
      "get": {
        "tags": [
          "Relations"
        ],
        "summary": "List product relation types",
        "description": "Reference list of Product Relation types. The ids in the list can be used as accessoryTypeSeed in calls to ListProductAccessories/ListProductRelations.",
        "operationId": "ListProductRelationTypes",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductUpsell": {},
    "/ListProductUpsell2": {},
    "/ListProductUpSell3": {},
    "/ListProductUpSell4": {},
    "/InsertProductReview": {
      "post": {
        "tags": [
          "Reviews"
        ],
        "summary": "Insert product review",
        "description": "Inserts a product review and returns the new list. Likes and Dislikes will be set to zero.",
        "operationId": "InsertProductReview",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Review to insert. Likes and Dislikes will be ignored and set to zero.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Review"
              }
            },
            "application/xml": {
              "schema": {
                "$ref": "#/components/schemas/Review"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        },
        "x-codegen-request-body-name": "review"
      }
    },
    "/ListProductReviews": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "List product reviews",
        "description": "Lists reviews for a product. Only published Reviews will be listed.",
        "operationId": "ListProductReviews",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "The internal id of the product for which reviews are listed.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListProductReviewsAll": {
      "get": {
        "tags": [
          "Reviews"
        ],
        "summary": "List all product reviews",
        "description": "Lists all reviews for all products. Only published Reviews will be listed.",
        "operationId": "ListProductReviewsAll",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/UpdateProductReviewLikes": {
      "post": {
        "tags": [
          "Reviews"
        ],
        "summary": "Update product review likes",
        "description": "Updates likes/dislikes on review.",
        "operationId": "UpdateProductReviewLikes",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "Product internal id of the review.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "reviewId",
            "in": "query",
            "description": "The internal id of the review to like/dislike.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "doLike",
            "in": "query",
            "description": "True or false depending on like or dislike.",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Review"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListSkuTypes": {
      "get": {
        "tags": [
          "SkuTypes"
        ],
        "summary": "List SKU types",
        "description": "Lists the available sku types.",
        "operationId": "ListSkuTypes",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuType"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SkuType"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListStatuses": {
      "get": {
        "tags": [
          "Status"
        ],
        "summary": "List product statuses",
        "description": "Reference list of Product Statuses.",
        "operationId": "ListStatuses",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListVariantItems": {
      "post": {
        "tags": [
          "Variants"
        ],
        "summary": "List variant items",
        "description": "This method can be used together with any ListProduct-method to get related variant data when the ListProduct-method is called with asVariants = false. This will enable filtering on variant data in the product list. Just expand on the data needed in the list.",
        "operationId": "ListVariantItems",
        "parameters": [
          {
            "name": "productIds",
            "in": "query",
            "description": "A list of product internal ids to get variant data for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusSeed",
            "in": "query",
            "description": "Accepts a comma separated string of Status internal ids. Lookup references in ListStatuses.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "parametrics",
            "in": "query",
            "description": "Parametric values formatted as ListParameters = L[ParametricId]_[ListId], MultiParameters = M[ParametricId]_[MultipleId], ValueParameters = V[ParametricId]_[ValueFrom]-[ValueTo] with asterisk (*) as separator. Sample: L10_45*M20_254*M20_145*V60_256-1024*V70_1.4-1.9. The logical operation between values is AND.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "storeSeed",
            "in": "query",
            "description": "Accepts a comma separated string of store internal ids. The StoreOnHand property of the product will show the onHand values for supplied Stores if supplied.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "A comma separated list of PriceList internal ids to use, if any. PriceLists supplied must be valid, either from the application's public priceList or any customer or company priceLists or any valid client priceLists. For clients configured to use priceListSeed exclusively in the API only the supplied priceLists will be used. If this is not configured, the supplied priceLists will be appended to the valid priceLists. If none is supplied, the default value for the application will be used in combination with any customer or company priceLists. This applies to both configurations.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "Customer internal id. Checks for specific customer bound prices if provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Company internal id. Checks for specific company bound prices if provided. Note! customerId is mandatory in combination with companyId.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand",
            "in": "query",
            "description": "An expand option that specifies what expansions should be made on the VariantItem entity. Valid values are: None, Price, OnHand, OnHandStore, OnHandSupplier and Parameters. These can be comma separated. Use Full for all. Default is Full. None will return just the VariantItem without expansions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "Specifies in which currency to display prices. Uses Storm internal ids. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VariantItem"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VariantItem"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    },
    "/ListWarehouseInfo": {
      "get": {
        "tags": [
          "Warehouses"
        ],
        "summary": "List warehouse info types",
        "description": "List warehouse information types",
        "operationId": "ListWarehouseInfo",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WarehouseInfo"
                  }
                }
              },
              "application/xml": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WarehouseInfo"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {}
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CategoryItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Category structure item.",
            "format": "int32"
          },
          "ParentId": {
            "type": "integer",
            "description": "The internal Id of the parent Category structure item.",
            "format": "int32",
            "nullable": true
          },
          "CategoryId": {
            "type": "integer",
            "description": "The internal Id of the actual Category.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the actual Category if the specified so, otherwise it is the Name of the Category structure. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Category. MaxLength: max."
          },
          "ImagePath": {
            "type": "string",
            "description": "MaxLength: 500. Obsolete! - Use ImageKey"
          },
          "Level": {
            "type": "integer",
            "description": "The Level of the CategoryItem from the Category structure.",
            "format": "int32"
          },
          "IsDisplayOnly": {
            "type": "boolean",
            "description": "Indicates if the CategoryItem is just for display or not."
          },
          "Key": {
            "type": "string",
            "description": "The Key of the Category structure item.",
            "format": "guid"
          },
          "Children": {
            "type": "array",
            "description": "A list of children for the Category structure item.",
            "items": {
              "$ref": "#/components/schemas/CategoryItem"
            }
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "External code for mapping to the Client's id of this entity. MaxLength: 50."
          },
          "Synonyms": {
            "type": "string",
            "description": "Synonyms from the Category in Storm. Can be used when indexing the category in any search engine. MaxLength: 500."
          },
          "Parametrics": {
            "type": "array",
            "description": "Parametrics is a list of parameterics defined for the category.",
            "items": {
              "$ref": "#/components/schemas/CategoryParametric"
            }
          }
        },
        "format": "CategoryItem"
      },
      "CategoryParametric": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Parametric.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The internal Id of the Parametric. MaxLength: 50."
          },
          "GroupId": {
            "type": "integer",
            "description": "The internal Id of the ParametricGroup.",
            "format": "int32"
          },
          "GroupName": {
            "type": "string",
            "description": "The Name of the ParametricGroup. MaxLength: 50."
          },
          "SortOrder": {
            "type": "integer",
            "description": "Use this to sort the parametric. The value is fetched from the category's sort order for the parametric values.",
            "format": "int32"
          },
          "IsGlobal": {
            "type": "boolean",
            "description": "Indicates if the parametric is global. If it is set as global it exists on all products in all categories."
          }
        },
        "format": "CategoryParametric"
      },
      "ConfigurationItem": {
        "type": "object",
        "properties": {
          "PartNo": {
            "type": "string",
            "description": "The PartNo of the ConfigurationItem. MaxLength: 50."
          },
          "Groups": {
            "type": "array",
            "description": "A list of ConfigurationItemGroups where each group contains selectable items.",
            "items": {
              "$ref": "#/components/schemas/ConfigurationItemGroup"
            }
          }
        },
        "format": "ConfigurationItem"
      },
      "ConfigurationItemGroup": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the ConfigurationItemGroup.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the ConfigurationItemGroup. MaxLength: 512."
          },
          "IsOptional": {
            "type": "boolean",
            "description": "Indicates if any item from Items must be selected or not."
          },
          "IsMultiSelection": {
            "type": "boolean",
            "description": "Indicates if more than one item in Items must be selected or not."
          },
          "SortOrder": {
            "type": "integer",
            "description": "The SortOrder of the ConfigurationItemGroup within the ConfigurationItem.",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "description": "A list of ConfigurationItemGroupItems where each item is a selectable product.",
            "items": {
              "$ref": "#/components/schemas/ConfigurationItemGroupItem"
            }
          }
        },
        "format": "ConfigurationItemGroup"
      },
      "ConfigurationItemGroupItem": {
        "type": "object",
        "properties": {
          "ProductId": {
            "type": "integer",
            "description": "The internal product id of the Product.",
            "format": "int32"
          },
          "PartNo": {
            "type": "string",
            "description": "The PartNo of the Product. MaxLength: 50."
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Product. When Product is a VariantType, this will be the value of the variant parameter(s). MaxLength: 255."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Product. MaxLength: max."
          },
          "SortOrder": {
            "type": "integer",
            "description": "The SortOrder of the Item within the group.",
            "format": "int32"
          },
          "Quantity": {
            "type": "number",
            "description": "The Quantity of the Item.",
            "format": "decimal"
          },
          "Price": {
            "type": "number",
            "description": "The Price of the Item.",
            "format": "decimal"
          },
          "PriceListId": {
            "type": "integer",
            "description": "The internal pricelist id of the Item.",
            "format": "int32"
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. GetProduct and GetProductByUniqueName gets the same Product. MaxLength: 500."
          }
        },
        "format": "ConfigurationItemGroupItem"
      },
      "Family": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Family.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Family. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Family. MaxLength: max."
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The external Code of the Family. MaxLength: 50."
          }
        },
        "format": "Family"
      },
      "Filter": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The Name of the filter. Available names are: catf, mfrf, flgf, ohf, prcf and parf. These are a short notation of the actual types. Used in filter specifications as filter name. MaxLength: 50."
          },
          "Type": {
            "type": "string",
            "description": "The Type of the filter. Available types are: Category, Manufacturer, Flag, OnHand, Price and Parametric. MaxLength: 50."
          },
          "Items": {
            "type": "array",
            "description": "A list of specific FilterItems for the Filter. The items are the actual values for each type of Filter.",
            "items": {
              "$ref": "#/components/schemas/IFilterItem"
            }
          }
        },
        "format": "Filter"
      },
      "FilterBoolItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IFilterItem"
          },
          {
            "type": "object",
            "properties": {
              "Id": {
                "type": "string",
                "description": "The internal Id of the Parametric. MaxLength: int."
              },
              "Name": {
                "type": "string",
                "description": "The Name of the Parametric. MaxLength: 255."
              },
              "Count": {
                "type": "integer",
                "description": "A count of SKUs matched by the FilterItem.",
                "format": "int32"
              },
              "FalseCount": {
                "type": "integer",
                "description": "A count of SKUs not matched by the FilterItem.",
                "format": "int32"
              },
              "Description": {
                "type": "string",
                "description": "The Description of the Parametric. MaxLength: max."
              },
              "ImageKey": {
                "type": "string",
                "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters. Obsolete! - Not supported",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "FilterItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IFilterItem"
          },
          {
            "type": "object",
            "properties": {
              "Id": {
                "type": "string",
                "description": "The internal id of the FilterItem. Values are dependent on the type of the filter. This will be the internal id of a catergory if the Filter is a Category filter. Not used for OnHand and Price filters. MaxLength: int.max."
              },
              "Name": {
                "type": "string",
                "description": "MaxLength: 255."
              },
              "Value": {
                "type": "string",
                "description": "The Value of the FilterItem. MaxLength: max."
              },
              "Type": {
                "type": "string",
                "description": "The Type of the Item. This is the data type, such as int, string, decimal and DateTime. MaxLength: 50."
              },
              "Uom": {
                "type": "string",
                "description": "Unit of measurement for the value, if specified. MaxLength: 50."
              },
              "Count": {
                "type": "integer",
                "description": "A count of SKUs matched by the FilterItem.",
                "format": "int32"
              },
              "Description": {
                "type": "string",
                "description": "A description of the value. MaxLength: max."
              },
              "Code": {
                "type": "string",
                "description": "A Client specific code for the value. MaxLength: 50."
              },
              "SortOrder": {
                "type": "integer",
                "description": "SortOrder for the FilterItem. Only used for parametric filter values and can be specified in StormAdmin for list values or multi values. Can be used to sort the values. Default sort order is Name.",
                "format": "int32",
                "nullable": true
              }
            }
          }
        ]
      },
      "FilterListItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IFilterItem"
          },
          {
            "type": "object",
            "properties": {
              "Id": {
                "type": "string",
                "description": "The internal Id of the Parametric. MaxLength: int."
              },
              "Name": {
                "type": "string",
                "description": "The Name of the Parametric. MaxLength: 255."
              },
              "Items": {
                "type": "array",
                "description": "A list of FilterItems where each FilterItem represents a distinct parametric value.",
                "items": {
                  "$ref": "#/components/schemas/IFilterItem"
                }
              },
              "Description": {
                "type": "string",
                "description": "The Description of the Parametric. MaxLength: max."
              },
              "ImageKey": {
                "type": "string",
                "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters. Obsolete! - Not supported",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "FilterMultiItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IFilterItem"
          },
          {
            "type": "object",
            "properties": {
              "Id": {
                "type": "string",
                "description": "The internal Id of the Parametric. MaxLength: int."
              },
              "Name": {
                "type": "string",
                "description": "The Name of the Parametric. MaxLength: 255."
              },
              "Items": {
                "type": "array",
                "description": "A list of FilterItems where each FilterItem represents a distinct parametric value.",
                "items": {
                  "$ref": "#/components/schemas/IFilterItem"
                }
              },
              "Description": {
                "type": "string",
                "description": "The Description of the Parametric. MaxLength: max."
              },
              "ImageKey": {
                "type": "string",
                "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters. Obsolete! - Not supported",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "FilterPriceItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IFilterItem"
          },
          {
            "type": "object",
            "properties": {
              "Id": {
                "type": "string",
                "description": "Not used. MaxLength: int."
              },
              "Name": {
                "type": "string",
                "description": "Not used. MaxLength: 255."
              },
              "From": {
                "type": "number",
                "description": "The lowest price from the result set, excluding VAT.",
                "format": "decimal"
              },
              "To": {
                "type": "number",
                "description": "The highest price from the result set, excluding VAT.",
                "format": "decimal"
              },
              "FromIncVat": {
                "type": "number",
                "description": "The lowest price from the result set, including VAT.",
                "format": "decimal"
              },
              "ToIncVat": {
                "type": "number",
                "description": "The highest price from the result set, including VAT.",
                "format": "decimal"
              }
            }
          }
        ]
      },
      "FilterRangeItem": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IFilterItem"
          },
          {
            "type": "object",
            "properties": {
              "Id": {
                "type": "string",
                "description": "The internal Id of the Parametric. MaxLength: int."
              },
              "Name": {
                "type": "string",
                "description": "The Name of the Parametric. MaxLength: 255."
              },
              "From": {
                "type": "string",
                "description": "The minimum value in the range of the Parametric. MaxLength: decimal."
              },
              "To": {
                "type": "string",
                "description": "The maximum value in the range of the Parametric. MaxLength: decimal."
              },
              "Type": {
                "type": "string",
                "description": "The Type of the range values. Normally int or decimal. MaxLength: max."
              },
              "Uom": {
                "type": "string",
                "description": "The unit of measurement of the Parametric. MaxLength: 50."
              },
              "Description": {
                "type": "string",
                "description": "The Description of the Parametric. MaxLength: max."
              },
              "ImageKey": {
                "type": "string",
                "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters. Obsolete! - Not supported",
                "format": "guid",
                "nullable": true
              }
            }
          }
        ]
      },
      "Flag": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Flag.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Flag. MaxLength: 50."
          },
          "TypeId": {
            "type": "integer",
            "description": "The Type of the Flag. ProductFlags have TypeId = 1 and VariantFlags have TypeId = 2.",
            "format": "int32"
          },
          "GroupId": {
            "type": "integer",
            "description": "The GroupId of the Flag. This value is client specific and can be used to group product flags.",
            "format": "int32"
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Flag. MaxLength: 500."
          },
          "Code": {
            "type": "string",
            "description": "The external Code for the flag. MaxLength: 500."
          }
        },
        "format": "Flag"
      },
      "FlagGroup": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the flagGroup.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the flagGroup. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the flagGroup. MaxLength: 500."
          },
          "Code": {
            "type": "string",
            "description": "The external Code for the flagGroup. MaxLength: 500."
          }
        },
        "format": "FlagGroup"
      },
      "HistoricalBestPrice": {
        "type": "object",
        "properties": {
          "PartNo": {
            "type": "string",
            "description": "The part number for this product. MaxLength: 50."
          },
          "PriceListId": {
            "type": "integer",
            "description": "The pricelist internal id for the price.",
            "format": "int32"
          },
          "Price": {
            "type": "number",
            "description": "The actual price value, excluding VAT.",
            "format": "decimal"
          },
          "PriceIncVat": {
            "type": "number",
            "description": "The actual price value, including VAT.",
            "format": "decimal"
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "Updated": {
            "type": "string",
            "description": "Time when this price started to be best price.",
            "format": "date-time"
          }
        },
        "format": "HistoricalBestPrice"
      },
      "Manufacturer": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Manufacturer.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Manufacturer. MaxLength: 100."
          },
          "OrgNo": {
            "type": "string",
            "description": "The organizational number of the Manufacturer. MaxLength: 50."
          },
          "WebSite": {
            "type": "string",
            "description": "The url to the Manufacturer's web site. MaxLength: 255."
          },
          "LogoPath": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use LogoKey"
          },
          "SupportUrl": {
            "type": "string",
            "description": "The url to the Manufacturer's support page on their web site. MaxLength: 255."
          },
          "SupportEmail": {
            "type": "string",
            "description": "The email address to the Manufacturer's support. MaxLength: 255."
          },
          "SupportPhone": {
            "type": "string",
            "description": "The phone number to the Manufacturer's support. MaxLength: 500."
          },
          "SupportOpenHours": {
            "type": "string",
            "description": "The opening hours for the Manufacturer's support. MaxLength: max."
          },
          "SupportPolicy": {
            "type": "string",
            "description": "The url to the Manufacturer's support policy web page. MaxLength: max."
          },
          "SupportDescription": {
            "type": "string",
            "description": "The url to the Manufacturer's support description web page. MaxLength: max."
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key of the Manufacturer.",
            "format": "guid"
          },
          "LogoKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{LogoKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get this entity. GetManufacturer and GetManufacturerByUniqueName gets the same Manufacturer. MaxLength: 255."
          }
        },
        "format": "Manufacturer"
      },
      "ManufacturerItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Manufacturer.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Manufacturer. MaxLength: 100."
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key of the Manufacturer.",
            "format": "guid"
          },
          "ProductCount": {
            "type": "integer",
            "format": "int32"
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Manufacturer. GetManufacturer and GetManufacturerByUniqueName gets the same Manufacturer. MaxLength: 255."
          },
          "LogoKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{LogoKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          }
        },
        "format": "ManufacturerItem"
      },
      "ManufacturerItemPagedList": {
        "type": "object",
        "properties": {
          "ItemCount": {
            "type": "integer",
            "description": "The total item count. Can be used to manage paging. Use PageSize to calculate number of pages.",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "description": "Current list of ManufacturerItems for the current page if paging is used. Otherwise all items will be in the list.",
            "items": {
              "$ref": "#/components/schemas/ManufacturerItem"
            }
          }
        },
        "format": "ManufacturerItemPagedList"
      },
      "NavigationNode": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "description": "Key is unique for the NavigationNode and used when listing the content displayed for the node.",
            "format": "guid"
          },
          "Hierarchy": {
            "type": "string",
            "description": "Hierarchy represents the current navigation path within the NavigationNode structure. Hierarchy is used to get the sub nodes for current node. MaxLength: 4000."
          },
          "TypeId": {
            "type": "integer",
            "description": "TypeId defines the content type of the NavigationNode. ",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The display name of the NavigationNode. MaxLength: 50."
          },
          "TargetPath": {
            "type": "string",
            "description": "The target path, if any, for the NavigationNode. This can be a direct link to any page that defines the content for the node. Depending on TypeId. MaxLength: 500."
          },
          "ManufacturerSeed": {
            "type": "string",
            "description": "The manufacturer seed, if any, for the NavigationNode. MaxLength: 255."
          },
          "CategorySeed": {
            "type": "string",
            "description": "The category seed, if any, for the NavigationNode. MaxLength: 255."
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids, if any, for the NavigationNode. MaxLength: 255."
          },
          "ImageKey": {
            "type": "string",
            "description": "The image key for the first underlying category, if any. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The description for the first underlying category, if any. MaxLength: max."
          },
          "ProductCount": {
            "type": "integer",
            "description": "A count of existing products under this node. It will have a value if fetched from an operation which calculates the value, null otherwise.",
            "format": "int32",
            "nullable": true
          }
        },
        "format": "NavigationNode"
      },
      "NavigationStructure": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id is used to get the NavigationNodeList for this structure.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the NavigationStructure. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the NavigationStructure. MaxLength: 500."
          },
          "IsDefault": {
            "type": "boolean",
            "description": "Indicates if the NavigationStructure is a default structure or not."
          }
        },
        "format": "NavigationStructure"
      },
      "OnHand": {
        "type": "object",
        "properties": {
          "Value": {
            "type": "number",
            "description": "The aggregated value from all warehouses and locations in the current context (Web, Supplier or Store).",
            "format": "decimal"
          },
          "IncomingValue": {
            "type": "number",
            "description": "The incoming quantity on the next delivery.",
            "format": "decimal"
          },
          "NextDeliveryDate": {
            "type": "string",
            "description": "The next delivery data from supplier to client warehouse.",
            "format": "date-time",
            "nullable": true
          },
          "LeadtimeDayCount": {
            "type": "integer",
            "description": "The number of days it takes to ship from the supplier.",
            "format": "int32",
            "nullable": true
          },
          "LastChecked": {
            "type": "string",
            "description": "When onHand info was last checked. Null if never.",
            "format": "date-time",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "Indicate if the product is stocked in a store."
          },
          "IsReturnable": {
            "type": "boolean",
            "description": "Indicate if the product is returnable in a store."
          },
          "Info": {
            "type": "array",
            "description": "List of IdValues for the OnHand data for this sku warehouse location combination. This will always be null unless fetched with any of the ProductOnHand methods.",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            }
          }
        },
        "format": "OnHand"
      },
      "ParametricGroup": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the parametricGroup.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the parametricGroup. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the parametricGroup. MaxLength: 500."
          },
          "Code": {
            "type": "string",
            "description": "The external Code for the parametricGroup. MaxLength: 500."
          }
        },
        "format": "ParametricGroup"
      },
      "ParametricInfo": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the parametric.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the parametric. MaxLength: 50."
          },
          "Type": {
            "type": "string",
            "description": "The Type of the parametric: ListValue, MultiValue or Value."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the parametric. MaxLength: 500."
          },
          "Uom": {
            "type": "string",
            "description": "The unit of measurement of the values. MaxLength: 50."
          },
          "IsVariantParametric": {
            "type": "boolean",
            "description": "Specifies if the current Parametric is for variants only (true) or for the common product (false)."
          },
          "ValueType": {
            "type": "string",
            "description": "The data type of the values for this parametric: Text, Integer, Decimal, Boolean, Html or Date."
          },
          "Code": {
            "type": "string",
            "description": "An externally defined code use to identify this Parametric. MaxLength: 50."
          },
          "IsHidden": {
            "type": "boolean",
            "description": "Indicates if the parametric is hidden or not. This can be used to hide parametrics that are only used in application logic. Only non-hidden parametrics should be displayed in the frontend."
          },
          "IsGlobal": {
            "type": "boolean",
            "description": "Indicates if the parametric is global. If it is set as global it exists on all products in all categories."
          }
        },
        "format": "ParametricInfo"
      },
      "ParametricsSeed": {
        "type": "object",
        "properties": {
          "ListSeed": {
            "type": "string",
            "description": "A comma separated list of parametric values on the format id:value-id. Id is the parametric id and value id is the parametric value id. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          },
          "MultipleSeed": {
            "type": "string",
            "description": "Same as for ParametricListSeed but any parametric can have multiple values. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          },
          "ValueSeed": {
            "type": "string",
            "description": "Same as for ParametricListSeed but the value is inlined as id:value. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. Parametric with values of type html or text are not supported. MaxLength: max."
          }
        },
        "format": "ParametricsSeed"
      },
      "ParametricValue": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the parametric value.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the parametric value. MaxLength: 255."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the parametric value. MaxLength: max."
          },
          "Code": {
            "type": "string",
            "description": "An externally defined code use to identify this Parametric value. MaxLength: 50."
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Type": {
            "type": "string",
            "description": "MaxLength: 50. Obsolete! - Use ParametricInfo.Type"
          },
          "SortOrder": {
            "type": "integer",
            "description": "Can be specified in Storm Admin for each parametric value.",
            "format": "int32"
          },
          "ParametricId": {
            "type": "integer",
            "description": "The internal Id of the Parametric that contains this value.",
            "format": "int32"
          },
          "ParametricCode": {
            "type": "string",
            "description": "An externally defined code use to identify this Parametric that contains this value. MaxLength: 50."
          }
        },
        "format": "ParametricValue"
      },
      "Pricelist": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the pricelist.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the pricelist. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the pricelist. MaxLength: max."
          },
          "Agreement": {
            "type": "string",
            "description": "External pricelist code usually known to the Erp-system. MaxLength: 50."
          },
          "Currency": {
            "$ref": "#/components/schemas/ApplicationsCurrency"
          },
          "IsPrimary": {
            "type": "boolean",
            "description": "Specifies if this is the primary priceList or not."
          },
          "IsPublic": {
            "type": "boolean",
            "description": "Specifies if this is a public priceList or not. Most application specific pricelists are public while customer specific are not."
          },
          "IsLimitedToStock": {
            "type": "boolean",
            "description": "Specifies if this priceList is limited to stock or not."
          },
          "IsBid": {
            "type": "boolean",
            "description": "Specifies if this is a bid pricelist or not."
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Internal id representing the type of priceList. Types are client specific except for 0=None, which is the default or standard priceList type. See ListPriceListTypes for defined types.",
            "format": "int32"
          },
          "StartDate": {
            "type": "string",
            "description": "The StarDate for when the pricelist is valid, if any.",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "The EndDate for when the pricelist is valid, if any.",
            "format": "date-time",
            "nullable": true
          },
          "IsVirtual": {
            "type": "boolean",
            "description": "Specifies if the pricelist is virtual or not. Virtual pricelists must be inherited from a parent pricelists, which cannot be virtual, and can have no population rules. Prices are not stored in Storm but calculated on the fly when needed. Rules can be specified but other properties are inherited from parent."
          }
        },
        "format": "Pricelist"
      },
      "Product": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal id of the product.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The name of the product. When Product is a VariantType, this will be the value of the variant parameter(s). MaxLength: 255."
          },
          "Description": {
            "type": "string",
            "description": "Description of the product. MaxLength: max."
          },
          "PartNo": {
            "type": "string",
            "description": "Contains the partNo if the product is not a variant or if the product is fetched by PartNo or VariantUniqueName. If the product has a value here then the selected variant can be found by either PartNo or by Id. MaxLength: 50."
          },
          "SubHeader": {
            "type": "string",
            "description": "MaxLength: 25."
          },
          "Manufacturer": {
            "$ref": "#/components/schemas/ProductManufacturer"
          },
          "Image": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey"
          },
          "CampaignImage": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey with preset"
          },
          "LargeImage": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey with preset"
          },
          "ThumbnailImage": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey with preset"
          },
          "Files": {
            "type": "array",
            "description": "If viewed on Product level this will be the product specific files. If viewed on a Variant it will be the variant specific files.",
            "items": {
              "$ref": "#/components/schemas/ProductFile"
            }
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids. If viewed on Product level this will be the product specific flags. If viewed on a Variant it will be the variant specific flags. MaxLength: max."
          },
          "Price": {
            "type": "number",
            "description": "If viewed on Product level this can be a from-price. It will be the price of the cheapest variant. If viewed on a Variant it will be the variant specific price.",
            "format": "decimal"
          },
          "PriceCatalog": {
            "type": "number",
            "description": "The original price, if specified. Same rules apply as for Price if it is a Product or a Variant.",
            "format": "decimal",
            "nullable": true
          },
          "PriceRecommended": {
            "type": "number",
            "description": "The rule based price from a priceList, if specified. Same rules apply as for Price if it is a Product or a Variant.",
            "format": "decimal",
            "nullable": true
          },
          "PriceFreight": {
            "type": "number",
            "description": "Obsolete! - Use ListDeliveryMethodByProduct if this is required.",
            "format": "decimal",
            "nullable": true
          },
          "PriceFreightVatRate": {
            "type": "number",
            "description": "Obsolete! - Use ListDeliveryMethodByProduct if this is required.",
            "format": "decimal",
            "nullable": true
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "RecommendedQuantity": {
            "type": "number",
            "description": "Indicates the default value used as quantity when buying the product. If IsRecommendedQuantityFixed is true, only multiples of this quantity should be allowed.",
            "format": "decimal",
            "nullable": true
          },
          "OnHand": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandStore": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandSupplier": {
            "$ref": "#/components/schemas/OnHand"
          },
          "Variants": {
            "type": "array",
            "description": "A list of variants for this Product, if any. If the Product is itself a variant this will be empty.",
            "items": {
              "$ref": "#/components/schemas/Product"
            }
          },
          "PriceListId": {
            "type": "integer",
            "format": "int32"
          },
          "Key": {
            "type": "string",
            "format": "guid"
          },
          "Updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "NavigationNodeKey": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "CategoryId": {
            "type": "integer",
            "description": "Obsolete! - Use Categories",
            "format": "int32",
            "nullable": true
          },
          "CategoryName": {
            "type": "string",
            "description": "MaxLength: 50. Obsolete! - Use Categories"
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "VariantParametrics": {
            "type": "array",
            "description": "A list of this product's parametric values. Only used on variants.",
            "items": {
              "$ref": "#/components/schemas/ProductParametric"
            }
          },
          "StatusId": {
            "type": "integer",
            "format": "int32"
          },
          "MetaTags": {
            "type": "string",
            "description": "Meta tags for SEO optimization. MaxLength: max."
          },
          "MetaDescription": {
            "type": "string",
            "description": "Meta description for SEO optimization. MaxLength: max."
          },
          "VariantName": {
            "type": "string",
            "description": "The complete variant name of the product. MaxLength: 255."
          },
          "DescriptionHeader": {
            "type": "string",
            "description": "DescriptionHeader for the product as specified in Storm Admin. MaxLength: 255."
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. GetProduct and GetProductByUniqueName gets the same Product. MaxLength: 500."
          },
          "StockDisplayBreakPoint": {
            "type": "integer",
            "description": "A value that can be used for display logic regarding OnHand.",
            "format": "int32",
            "nullable": true
          },
          "Parametrics": {
            "type": "array",
            "description": "A list of this product's parametric values. Only Parametric values common to all variants for this product will be here. On Variant level this will contain Parametric values with distinguishing values that are not variant parametric values.",
            "items": {
              "$ref": "#/components/schemas/ProductParametric"
            }
          },
          "Families": {
            "type": "array",
            "description": "A list of this product's families.",
            "items": {
              "$ref": "#/components/schemas/IdNameDescription"
            }
          },
          "IsBuyable": {
            "type": "boolean",
            "description": "Indicates if the item is buyable or not. Will always be false if the status is closed. An exception will be thrown if IsBuyable is false and an attempt to buy the item is made. The property can be used to hide or show the buy-button. Note that the value can differ for underlying variants."
          },
          "SubDescription": {
            "type": "string",
            "description": "Sub description from Storm Admin. MaxLength: max."
          },
          "Uom": {
            "type": "string",
            "description": "Short unit of measurement from Storm Admin. MaxLength: 50."
          },
          "UomCount": {
            "type": "number",
            "description": "Unit of measurement count",
            "format": "decimal",
            "nullable": true
          },
          "EanCode": {
            "type": "string",
            "description": "This will be the EAN code of the selected variant of the product if any. Variants will have this set. MaxLength: 50."
          },
          "Type": {
            "type": "integer",
            "description": "Sku type internal id for this product. Might not be valid if there are variants with different types. Then variants must be examined. Also see ListSkutypes.",
            "format": "int32"
          },
          "Categories": {
            "type": "array",
            "description": "A list of categories ordered so the primary category is first.",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            }
          },
          "IsRecommendedQuantityFixed": {
            "type": "boolean",
            "description": "If this is set to true only multiples of RecommendedQuantity should be allowed."
          },
          "PopularityRank": {
            "type": "integer",
            "description": "A value used to sort items based on popularity. Lower values are more popular.",
            "format": "int32",
            "nullable": true
          },
          "CostPurchase": {
            "type": "number",
            "description": "CostPurchase from Storm Admin.",
            "format": "decimal",
            "nullable": true
          },
          "CostUnit": {
            "type": "number",
            "description": "CostUnit from Storm Admin.",
            "format": "decimal",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "Title for the product. As specified in Storm Admin. MaxLength: 255."
          },
          "ActualWeight": {
            "type": "number",
            "description": "Actual weight or gross weight for the product. As specified in Storm Admin.",
            "format": "decimal"
          },
          "CommodityCode": {
            "type": "string",
            "description": "Commodity code for the product. As specified in Storm Admin."
          },
          "IsDropShipOnly": {
            "type": "boolean",
            "description": "True if this product is for drop ship only. False otherwise."
          },
          "Synonyms": {
            "type": "string",
            "description": "Synonyms from the Product in Storm. Can be used when indexing the product in any search engine. MaxLength: 500."
          },
          "IsSubscribable": {
            "type": "boolean",
            "description": "True if this product can be added to a Subscription. False otherwise."
          },
          "UnspscCode": {
            "type": "string",
            "description": "United Nations Standard Products and Services Code for the product. MaxLength: 50."
          },
          "PriceStandard": {
            "type": "number",
            "description": "The standard price, if specified. Same rules apply as for Price if it is a Product or a Variant.",
            "format": "decimal",
            "nullable": true
          },
          "Width": {
            "type": "number",
            "description": "The logistic width as defined in Storm.",
            "format": "decimal",
            "nullable": true
          },
          "Height": {
            "type": "number",
            "description": "The logistic height as defined in Storm.",
            "format": "decimal",
            "nullable": true
          },
          "Depth": {
            "type": "number",
            "description": "The logistic depth as defined in Storm.",
            "format": "decimal",
            "nullable": true
          },
          "IsDangerousGoods": {
            "type": "boolean",
            "description": "True if this product is considered as dangerous goods. False otherwise."
          },
          "HasQuantityBreaks": {
            "type": "boolean",
            "description": "True if this product has any quantity breaks. False otherwise."
          },
          "GroupByKey": {
            "type": "string",
            "description": "A key that can be used to group items on product. It is equal to the ProductId for non-variants and equals 'v'+variantId for variants. Should only be used when fetching product lists as variants. MaxLength: int."
          },
          "PriceIncVat": {
            "type": "number",
            "description": "The price including VAT calculated on the server side. Should be used to display prices including VAT.",
            "format": "decimal"
          },
          "ImageAltText": {
            "type": "string",
            "description": "Default image alt text"
          }
        },
        "format": "Product"
      },
      "ProductAccessories": {
        "type": "object",
        "properties": {
          "Accessories": {
            "$ref": "#/components/schemas/ProductItemPagedList"
          },
          "VariantAccessories": {
            "type": "array",
            "description": "This is a list of VariantAccessories.",
            "items": {
              "$ref": "#/components/schemas/VariantAccessories"
            }
          }
        },
        "format": "ProductAccessories"
      },
      "ProductFile": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "This is the file internal id and it defines the kind of file it is. Not to be confused with entity ids. Values are application specific and should be like 'Front image', 'Back image'. See ListFileTypeIds for possible values.",
            "format": "int32"
          },
          "Type": {
            "type": "integer",
            "description": "This is the FileTypeId mapped from Storm's predefined types. Types maps to mime types.",
            "format": "int32"
          },
          "Path": {
            "type": "string",
            "description": "MaxLength: max. Obsolete! - Use Key"
          },
          "Name": {
            "type": "string",
            "description": "This is the Name of the product file. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "This is the Description of the product file. MaxLength: max."
          },
          "Key": {
            "type": "string",
            "description": "A unique id for the file at our image server. Url for images are formed like http://[client specific CDN]/{Key}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Extension": {
            "type": "string",
            "description": "This is the file type extension for the current file. Can be used to append after image key in url. MaxLength: 50."
          },
          "Code": {
            "type": "string",
            "description": "This is the file's external Code. Can be use as is for grouping files if Id is not adequate. Or any other application specific purpose. MaxLength: 50."
          },
          "SortOrder": {
            "type": "integer",
            "description": "This is the sortorder of the file within its file type Id.",
            "format": "int32",
            "nullable": true
          },
          "ImageAltText": {
            "type": "string",
            "description": "Image alt text"
          }
        },
        "format": "ProductFile"
      },
      "ProductId": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal product id.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "MaxLength: 255."
          },
          "ManufacturerName": {
            "type": "string",
            "description": "MaxLength: 100."
          },
          "Price": {
            "type": "number",
            "description": "The best price excluding VAT for the product.",
            "format": "decimal"
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. GetProduct and GetProductByUniqueName gets the same Product. MaxLength: 500."
          },
          "CategoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "PriceIncVat": {
            "type": "number",
            "description": "The price including VAT calculated on the server side. Should be used to display prices including VAT.",
            "format": "decimal"
          }
        },
        "format": "ProductId"
      },
      "ProductItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal product id.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "MaxLength: 255."
          },
          "SubHeader": {
            "type": "string",
            "description": "MaxLength: 255."
          },
          "Manufacturer": {
            "$ref": "#/components/schemas/ProductManufacturer"
          },
          "Image": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey"
          },
          "CampaignImage": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey with preset"
          },
          "LargeImage": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey with preset"
          },
          "ThumbnailImage": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey with preset"
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids. MaxLength: max."
          },
          "Price": {
            "type": "number",
            "description": "Best price calculated from available pricelists, excluding VAT.",
            "format": "decimal"
          },
          "PriceRecommended": {
            "type": "number",
            "description": "The rule based price from a priceList, excluding VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "PriceCatalog": {
            "type": "number",
            "description": "The original price, excluding VAT, if specified. ",
            "format": "decimal",
            "nullable": true
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "RecommendedQuantity": {
            "type": "number",
            "description": "Indicates the default value used as quantity when buying the product. If IsRecommendedQuantityFixed is true, only multiples of this quantity should be allowed.",
            "format": "decimal",
            "nullable": true
          },
          "OnHand": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandStore": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandSupplier": {
            "$ref": "#/components/schemas/OnHand"
          },
          "Key": {
            "type": "string",
            "format": "guid"
          },
          "Updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "PopularityRank": {
            "type": "integer",
            "description": "A value used to sort items based on popularity. Lower values are more popular.",
            "format": "int32",
            "nullable": true
          },
          "StatusId": {
            "type": "integer",
            "format": "int32"
          },
          "VariantName": {
            "type": "string",
            "description": "MaxLength: 255."
          },
          "VariantImageKey": {
            "type": "string",
            "format": "guid",
            "nullable": true
          },
          "AdditionalImageKeySeed": {
            "type": "string",
            "description": "Seed formatted as TypeId[1]:Guid[1], TypeId[2]:Guid[2],.., TypeId[n]:Guid[n]. MaxLength: max."
          },
          "GroupByKey": {
            "type": "string",
            "description": "A key that can be used to group items on product. It is equal to the ProductId for non-variants and equals 'v'+variantId for variants. Should only be used when fetching product lists as variants. MaxLength: int."
          },
          "VariantFlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids. Contains any variant specific flags when fetched in product list AsVariants. MaxLength: max."
          },
          "PartNo": {
            "type": "string",
            "description": "Contains the partNo if the product is not a variant. This will be empty if the product has variants. MaxLength: 50."
          },
          "PriceListId": {
            "type": "integer",
            "description": "Contains the priceList internal id if the product is not a variant. This will be empty if the product has variants.",
            "format": "int32",
            "nullable": true
          },
          "SortOrder": {
            "type": "integer",
            "description": "A custom sort order that can be used when the product item is in a list. The sort order is defined for the primary category of the product item.",
            "format": "int32",
            "nullable": true
          },
          "CategoryId": {
            "type": "integer",
            "description": "Obsolete! - Use CategoryIdSeed",
            "format": "int32",
            "nullable": true
          },
          "ParametricListSeed": {
            "type": "string",
            "description": "ParametricListSeed contains a comma separated list of id-value pairs separated by colon. Ex: 4711:32,4712:5. Id is the ParametricId and Value is a ListValueId. Note that parametric values with string or html types are not included here since we cannot know if they contain any of the separators. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          },
          "ParametricMultipleSeed": {
            "type": "string",
            "description": "ParametricMultipleSeed contains a comma separated list of id-value pairs separated by colon. Ex: 4711:32,4712:5. Id is the ParametricId and Value is a MultipleValueId. Multiple values for the same parametric are repeated with the same id but different values. Note that parametric values with string or html types are not included here since we cannot know if they contain any of the separators. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          },
          "ParametricValueSeed": {
            "type": "string",
            "description": "ParametricValueSeed contains a comma separated list of id-value pairs separated by colon. Ex: 4711:32,4712:5. Id is the ParametricId and Value is the actual value depending on the parametric type. Note that parametric values with string or html types are not included here since we cannot know if they contain any of the separators. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          },
          "ParametricTextField": {
            "type": "array",
            "description": "Global text parametrics configured to to appear in lists.",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            }
          },
          "VariantParametricSeed": {
            "type": "string",
            "description": "Contains all ParametricIds that distinguishes these variants for this product. Their specific values are found under ParametricListSeed, ParametricMultiSeed or ParametricValueSeed. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. GetProduct and GetProductByUniqueName gets the same Product. MaxLength: 500."
          },
          "StockDisplayBreakPoint": {
            "type": "integer",
            "description": "A value that can be used for display logic regarding OnHand.",
            "format": "int32",
            "nullable": true
          },
          "IsBuyable": {
            "type": "boolean",
            "description": "Indicates if the item is buyable or not. Will always be false if the status is closed. An exception will be thrown if IsBuyable is false and an attempt to buy the item is made. The property can be used to hide or show the buy-button."
          },
          "SubDescription": {
            "type": "string",
            "description": "Sub description from Storm Admin. MaxLength: max."
          },
          "Quantity": {
            "type": "number",
            "description": "The Quantity, if applicable. Null otherwise. This value will be set when it makes sense such as for included items in StructuralItems.",
            "format": "decimal",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Sku type for this product. Might not be valid if there are variants with different types. Then variants must be examined. Also see ListSkutypes.",
            "format": "int32"
          },
          "CategoryIdSeed": {
            "type": "string",
            "description": "A comma separated list of category internal ids ordered so the primary category id is first. MaxLength: max."
          },
          "IsRecommendedQuantityFixed": {
            "type": "boolean",
            "description": "If this is set to true only multiples of RecommendedQuantity should be allowed."
          },
          "Synonyms": {
            "type": "string",
            "description": "Synonyms from the Product in Storm. Can be used when indexing the product in any search engine. MaxLength: 500."
          },
          "VariantUniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. This is the variant's unique name. GetProduct and GetProductByUniqueName gets the same Product. MaxLength: 500."
          },
          "IsSubscribable": {
            "type": "boolean",
            "description": "True if this product can be added in a Subscription. False otherwise."
          },
          "UnitOfMeasurement": {
            "type": "string",
            "description": "Short unit of measurement from Storm Admin. MaxLength: 50."
          },
          "UnitOfMeasurementCount": {
            "type": "number",
            "description": "Unit of measurement count",
            "format": "decimal",
            "nullable": true
          },
          "EanCode": {
            "type": "string",
            "description": "This will be the EAN code of the selected variant of the product if any. Variants will have this set. MaxLength: 50."
          },
          "PriceStandard": {
            "type": "number",
            "description": "The standard price, excluding VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "IsDangerousGoods": {
            "type": "boolean",
            "description": "True if this product is considered as dangerous goods. False otherwise."
          },
          "PriceIncVat": {
            "type": "number",
            "description": "The price including VAT calculated on the server side. Should be used to display prices including VAT.",
            "format": "decimal"
          },
          "ImageAltText": {
            "type": "string",
            "description": "Default image alt text"
          },
          "VariantImageAltText": {
            "type": "string",
            "description": "Variant image alt text"
          }
        },
        "format": "ProductItem"
      },
      "ProductItem2": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The product internal id for this ProductItem2.",
            "format": "int32"
          },
          "Key": {
            "type": "string",
            "format": "guid"
          },
          "Name": {
            "type": "string",
            "description": "MaxLength: 255."
          },
          "Manufacturer": {
            "$ref": "#/components/schemas/ProductManufacturer"
          },
          "CategoryIdSeed": {
            "type": "string",
            "description": "A comma separated list of category internal id ordered so the primary category id is first. MaxLength: max."
          },
          "PartNo": {
            "type": "string",
            "description": "Contains the part number of the primary Variant, adhering to manual sorting or if sorting isn't set - by lowest available price. MaxLength: 50."
          },
          "Price": {
            "$ref": "#/components/schemas/ProductPrice"
          },
          "OnHand": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandStore": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandSupplier": {
            "$ref": "#/components/schemas/OnHand"
          },
          "Variants": {
            "type": "array",
            "description": "The Variants on this ProductItem2. Use expand option Variants to include this property or it will be null.",
            "items": {
              "$ref": "#/components/schemas/VariantItem"
            }
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "AdditionalImageKeySeed": {
            "type": "string",
            "description": "Seed formatted as TypeId[1]:Guid[1], TypeId[2]:Guid[2],.., TypeId[n]:Guid[n]. MaxLength: max."
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids. MaxLength: max."
          },
          "Parametrics": {
            "$ref": "#/components/schemas/ParametricsSeed"
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. GetProduct and GetProductByUniqueName gets the same Product. MaxLength: 500."
          },
          "SubHeader": {
            "type": "string",
            "description": "Sub header from the Product in Storm. MaxLength: 255."
          },
          "SubDescription": {
            "type": "string",
            "description": "Sub description from the Product in Storm. MaxLength: max."
          },
          "Synonyms": {
            "type": "string",
            "description": "Synonyms from the Product in Storm. Can be used when indexing the product in any search engine. MaxLength: 500."
          },
          "StockDisplayBreakPoint": {
            "type": "integer",
            "description": "A value that can be used for display logic regarding OnHand.",
            "format": "int32",
            "nullable": true
          },
          "IsSubscribable": {
            "type": "boolean",
            "description": "True if this product can be added in a Subscription. False otherwise."
          },
          "PopularityRank": {
            "type": "integer",
            "description": "A value used to sort items based on popularity. Lower values are more popular.",
            "format": "int32",
            "nullable": true
          },
          "SortOrder": {
            "type": "integer",
            "description": "A custom sort order that can be used when the product item is in a list. The sort order is defined for the primary category of the product item.",
            "format": "int32",
            "nullable": true
          },
          "Updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ImageAltText": {
            "type": "string",
            "description": "Default image alt text"
          }
        },
        "format": "ProductItem2"
      },
      "ProductItem2PagedList": {
        "type": "object",
        "properties": {
          "ItemCount": {
            "type": "integer",
            "description": "Counts the number of products in the list. When fetched with a method that has filters, this value will be to total after the filters have been applied.",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductItem2"
            }
          }
        },
        "format": "ProductItem2PagedList"
      },
      "ProductItemFilterValues": {
        "type": "object",
        "properties": {
          "ProductId": {
            "type": "integer",
            "description": "Internal product id.",
            "format": "int32"
          },
          "GroupByKey": {
            "type": "string",
            "description": "A key that can be used to group items on product. It is equal to the ProductId for non-variants and equals 'v'+variantId for variants. Should only be used when fetching product lists as variants. MaxLength: int."
          },
          "CategoryId": {
            "type": "integer",
            "description": "Internal category id.",
            "format": "int32",
            "nullable": true
          },
          "ManufacturerId": {
            "type": "integer",
            "description": "Internal manufacturer id.",
            "format": "int32",
            "nullable": true
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids. MaxLength: max."
          },
          "Price": {
            "type": "number",
            "description": "Best price excluding VAT.",
            "format": "decimal"
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "OnHand": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandStore": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandSupplier": {
            "$ref": "#/components/schemas/OnHand"
          },
          "ParametricListSeed": {
            "type": "string",
            "description": "MaxLength: max."
          },
          "ParametricMultipleSeed": {
            "type": "string",
            "description": "MaxLength: max."
          },
          "ParametricValueSeed": {
            "type": "string",
            "description": "ParametricValueSeed contains a comma separated list of id-value pairs separated by colon. Ex: 4711:32,4712:5. Id is the ParametricId and Value is either a ListValueId, MultipleValueId or the actual value depending on the parametric type. Note that parametric values with string or html types are not included here since we cannot know if they contain any of the separators. Use ListParametricInfo to list all parametric info and ListParametricValues2 for all values as lookup when resolving parametric data. MaxLength: max."
          }
        },
        "format": "ProductItemFilterValues"
      },
      "ProductItemPagedList": {
        "type": "object",
        "properties": {
          "ItemCount": {
            "type": "integer",
            "description": "Counts the number of products in the list. If the list is fetched with AsVariants set to true ItemCount will still just count the number of products. Not items in the list. When fetched with a method that has filters, this value will be to total after the filters have been applied.",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductItem"
            }
          }
        },
        "format": "ProductItemPagedList"
      },
      "ProductManufacturer": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal id of manufacturer.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "MaxLength: 255."
          },
          "PartNo": {
            "type": "string",
            "description": "MaxLength: 50."
          },
          "LogoPath": {
            "type": "string",
            "description": "MaxLength: 255. Obsolete! - Use ImageKey"
          },
          "LogoKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{LogoKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Manufacturer. GetManufacturer and GetManufacturerByUniqueName gets the same Manufacturer. MaxLength: 255."
          }
        },
        "format": "ProductManufacturer"
      },
      "ProductOnHand": {
        "type": "object",
        "properties": {
          "ProductId": {
            "type": "integer",
            "description": "The product internal id for the current product/variant. If the entity is fetched by productId it will be that productId. If the product is fetched by partNo it will be the productId for that variant.",
            "format": "int32"
          },
          "Warehouses": {
            "type": "array",
            "description": "A list of warehouses with OnHand for the product.",
            "items": {
              "$ref": "#/components/schemas/Warehouse"
            }
          },
          "Variants": {
            "type": "array",
            "description": "An optional list of ProductOnHand for all variants if fetched by productId. Null when fetched for a variant or a basket.",
            "items": {
              "$ref": "#/components/schemas/ProductOnHand"
            }
          }
        },
        "format": "ProductOnHand"
      },
      "ProductParametric": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "MaxLength: 50."
          },
          "Value": {
            "type": "string",
            "description": "MaxLength: max. Obsolete! - Use Value2 with Uom"
          },
          "Id": {
            "type": "integer",
            "description": "Internal product parametric id.",
            "format": "int32"
          },
          "ValueId": {
            "type": "integer",
            "description": "Parametric value internal id if the parametric type is single list value.",
            "format": "int32",
            "nullable": true
          },
          "Description": {
            "type": "string"
          },
          "ValueDescription": {
            "type": "string",
            "description": "MaxLength: max."
          },
          "IsPrimary": {
            "type": "boolean"
          },
          "ValueIdSeed": {
            "type": "string",
            "description": "MaxLength: max."
          },
          "Value2": {
            "type": "string",
            "description": "The parametric value, if not a ListValue or a MultiValue parametric. MaxLength: max."
          },
          "Uom": {
            "type": "string",
            "description": "The unit of measurement, if any. MaxLength: 50."
          },
          "GroupId": {
            "type": "integer",
            "description": "Id of the parametric group.",
            "format": "int32"
          },
          "GroupName": {
            "type": "string",
            "description": "Name of the parametric group. MaxLength: 50."
          },
          "SortOrder": {
            "type": "integer",
            "description": "Use this to sort the parametric. The value is fetched from the variant group type's sort order in the first place and then from the category's sort order for the parametric values.",
            "format": "int32"
          },
          "Code": {
            "type": "string",
            "description": "An external application specific code use to identify this Parametric. MaxLength: 50."
          },
          "IsHidden": {
            "type": "boolean",
            "description": "Indicates if the parametric is hidden or not. This can be used to hide parametrics that are only used in application logic. Only non-hidden parametrics should be displayed in the frontend."
          }
        },
        "format": "ProductParametric"
      },
      "ProductPrice": {
        "type": "object",
        "properties": {
          "Value": {
            "type": "number",
            "description": "The actual price value, excluding VAT. Multiply by VatRate to get the price inc VAT.",
            "format": "decimal"
          },
          "Recommended": {
            "type": "number",
            "description": "The rule based price from a priceList, excluding VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "Catalog": {
            "type": "number",
            "description": "The original price, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "VatRate": {
            "type": "number",
            "description": "A rate to multiply with price to get price inc VAT. 25% VAT equals a VatRate of 1.25.",
            "format": "decimal"
          },
          "PriceListId": {
            "type": "integer",
            "description": "The priceList id for the price. If multiple priceLists are available then the best (lowest) price will be used.",
            "format": "int32"
          },
          "IsBuyable": {
            "type": "boolean",
            "description": "Indicates if the item is buyable or not. Will always be false if the status is closed. An exception will be thrown if IsBuyable is false and an attempt to buy the item is made. The property can be used to hide or show the buy-button."
          },
          "RecommendedQuantity": {
            "type": "number",
            "description": "Indicates the default value used as quantity when buying the product. If IsRecommendedQuantityFixed is true, only multiples of this quantity should be allowed.",
            "format": "decimal",
            "nullable": true
          },
          "IsRecommendedQuantityFixed": {
            "type": "boolean",
            "description": "If this is set to true only multiples of RecommendedQuantity should be allowed."
          },
          "Standard": {
            "type": "number",
            "description": "The standard price, excluding VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "ValueIncVat": {
            "type": "number",
            "description": "The actual price value including VAT calculated on the server side. Should be used to display prices including VAT.",
            "format": "decimal"
          }
        },
        "format": "ProductPrice"
      },
      "ProductPriceQtyBreak": {
        "type": "object",
        "properties": {
          "PartNo": {
            "type": "string",
            "description": "The part number for this product."
          },
          "QtyBreak": {
            "type": "number",
            "description": "The minimum quantity needed to purchase to receive the ProductPrice.",
            "format": "decimal"
          },
          "ProductPrice": {
            "$ref": "#/components/schemas/ProductPrice"
          }
        },
        "format": "ProductPriceQtyBreak"
      },
      "ProductRelations": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "This is the type internal id for the relation type",
            "format": "int32"
          },
          "Code": {
            "type": "string",
            "description": "This is the type external code for the relation type"
          },
          "Name": {
            "type": "string",
            "description": "This is the name of the relation type"
          },
          "Description": {
            "type": "string",
            "description": "This is the description of the relation type"
          },
          "RelationsMetadata": {
            "type": "array",
            "description": "Indicates if the related items are product or variant specific",
            "items": {
              "$ref": "#/components/schemas/RelationMetadataItem"
            }
          },
          "Relations": {
            "$ref": "#/components/schemas/ProductItemPagedList"
          },
          "VariantRelations": {
            "type": "array",
            "description": "This is a list of variant relations.",
            "items": {
              "$ref": "#/components/schemas/VariantRelations"
            }
          }
        },
        "format": "ProductRelations"
      },
      "PromotionProducts": {
        "type": "object",
        "properties": {
          "PromotionId": {
            "type": "integer",
            "description": "This is the promotion internal id for which the Products are listed.",
            "format": "int32"
          },
          "EffectId": {
            "type": "integer",
            "description": "This is the effect internal id for which the Products are listed.",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "description": "This is the list of Products associated with the promotion and effect.",
            "items": {
              "$ref": "#/components/schemas/ProductItem"
            }
          }
        },
        "format": "PromotionProducts"
      },
      "RelationMetadataItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "This is the Storm internal product id.",
            "format": "int32"
          },
          "PartNo": {
            "type": "string",
            "description": "This is the part number if variants are specified"
          },
          "IsVariantSpecific": {
            "type": "boolean",
            "description": "True if relation is to specific variants."
          }
        },
        "format": "RelationMetadataItem"
      },
      "Review": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the review. Null or left out when creating new reviews.",
            "format": "int32",
            "nullable": true
          },
          "ReferenceId": {
            "type": "integer",
            "description": "The internal product id of the review. Or if the review is for some other entity, then it is the entity Id.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The name of the reviewer. MaxLength: 255."
          },
          "Email": {
            "type": "string",
            "description": "The email address of the reviewer. MaxLength: 255."
          },
          "Text": {
            "type": "string",
            "description": "The review text. MaxLength: max."
          },
          "Url": {
            "type": "string",
            "description": "A Url to some external source referenced by the reviewer. MaxLength: 255."
          },
          "ImagePath": {
            "type": "string",
            "description": "A Url to some external image uploaded by the reviewer. MaxLength: 255."
          },
          "Score": {
            "type": "number",
            "description": "The review score, if scores are kept. It is up to the application to define the score range.",
            "format": "decimal"
          },
          "Date": {
            "type": "string",
            "description": "The date of the review.",
            "format": "date-time"
          },
          "Likes": {
            "type": "integer",
            "description": "Number of likes. See UpdateProductReviewLikes for information about how to update this.",
            "format": "int32"
          },
          "Dislikes": {
            "type": "integer",
            "description": "Number of dislikes. See UpdateProductReviewLikes for information about how to update this.",
            "format": "int32"
          },
          "IsPublished": {
            "type": "boolean",
            "description": "Shows if review is published. Applications can have new reviews to not be published and later after internal review on the content have it published.",
            "nullable": true
          }
        },
        "format": "Review"
      },
      "SkuType": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the sku type.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The name of the sku type. MaxLength: 255."
          },
          "Description": {
            "type": "string",
            "description": "The description of the sku type. MaxLength: max."
          },
          "SortOrder": {
            "type": "integer",
            "description": "The sort order of the sku type.",
            "format": "int32"
          },
          "Group": {
            "$ref": "#/components/schemas/IdNameDescription"
          }
        },
        "format": "SkuType"
      },
      "VariantAccessories": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "This is the product id for the variant.",
            "format": "int32"
          },
          "Accessories": {
            "$ref": "#/components/schemas/ProductItemPagedList"
          }
        },
        "format": "VariantAccessories"
      },
      "VariantItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The product internal id for this VariantItem.",
            "format": "int32"
          },
          "GroupByKey": {
            "type": "string",
            "description": "A key that group items on product. It is equal to the product id for non-variants and equals 'v'+variantId for variants. Should be used to correlate ProductItems with VariantItems. MaxLength: int."
          },
          "Name": {
            "type": "string",
            "description": "The Name of this VariantItem. Will be the same as the corresponding product if this is not a Variant. MaxLength: 255."
          },
          "StatusId": {
            "type": "integer",
            "description": "The status for this VariantItem. Valid values can be found in ListStatuses.",
            "format": "int32"
          },
          "TypeId": {
            "type": "integer",
            "description": "The sku type for this VariantItem. Valid values can be found in ListSkutypes.",
            "format": "int32"
          },
          "PartNo": {
            "type": "string",
            "description": "The partNo for this VariantItem. MaxLength: 50."
          },
          "ManufacturerPartNo": {
            "type": "string",
            "description": "The manufacturer's partNo for this VariantItem. MaxLength: 50."
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of flag internal ids. MaxLength: max."
          },
          "Price": {
            "$ref": "#/components/schemas/ProductPrice"
          },
          "OnHand": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandStore": {
            "$ref": "#/components/schemas/OnHand"
          },
          "OnHandSupplier": {
            "$ref": "#/components/schemas/OnHand"
          },
          "Parametrics": {
            "$ref": "#/components/schemas/ParametricsSeed"
          },
          "AdditionalImageKeySeed": {
            "type": "string",
            "description": "Seed formatted as TypeId[1]:Guid[1], TypeId[2]:Guid[2],.., TypeId[n]:Guid[n]. MaxLength: max."
          },
          "EanCode": {
            "type": "string",
            "description": "The EAN code for this VariantItem. MaxLength: 50."
          },
          "IsBuyable": {
            "type": "boolean",
            "description": "Indicates if the item is buyable or not. Will always be false if the status is closed. An exception will be thrown if IsBuyable is false and an attempt to buy the item is made. The property can be used to hide or show the buy-button."
          },
          "UnitOfMeasurement": {
            "type": "string",
            "description": "Short unit of measurement from Storm Admin. MaxLength: 50."
          },
          "UnitOfMeasurementCount": {
            "type": "number",
            "description": "Unit of measurement count",
            "format": "decimal",
            "nullable": true
          },
          "RecommendedQuantity": {
            "type": "number",
            "description": "Indicates the default value used as quantity when buying the product. If IsRecommendedQuantityFixed is true, only multiples of this quantity should be allowed.",
            "format": "decimal",
            "nullable": true
          },
          "IsRecommendedQuantityFixed": {
            "type": "boolean",
            "description": "If this is set to true only multiples of RecommendedQuantity should be allowed."
          },
          "SubHeader": {
            "type": "string",
            "description": "Sub header from the Product in Storm. Only set if Product texts are variant unique. MaxLength: 255."
          },
          "SubDescription": {
            "type": "string",
            "description": "Sub description from the Product in Storm. Only set if Product texts are variant unique. MaxLength: max."
          },
          "UniqueName": {
            "type": "string",
            "description": "A unique name that can be used in Urls and to get a Product. MaxLength: 500."
          }
        },
        "format": "VariantItem"
      },
      "VariantRelations": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "This is the product internal id for the variant",
            "format": "int32"
          },
          "RelationsMetadata": {
            "type": "array",
            "description": "Indicates if the related items are product or variant specific",
            "items": {
              "$ref": "#/components/schemas/RelationMetadataItem"
            }
          },
          "Relations": {
            "$ref": "#/components/schemas/ProductItemPagedList"
          }
        },
        "format": "VariantRelations"
      },
      "Warehouse": {
        "type": "object",
        "properties": {
          "StoreId": {
            "type": "integer",
            "description": "The store internal id for the current store. Can be null if WarehouseId and LocationId are supplied.",
            "format": "int32",
            "nullable": true
          },
          "WarehouseId": {
            "type": "integer",
            "description": "The internal id for the warehouse. Can be null if StoreId is supplied.",
            "format": "int32",
            "nullable": true
          },
          "LocationId": {
            "type": "integer",
            "description": "The internal id for the warehouse location. Can be null if StoreId is supplied.",
            "format": "int32",
            "nullable": true
          },
          "OnHand": {
            "$ref": "#/components/schemas/OnHand"
          }
        },
        "format": "Warehouse"
      },
      "WarehouseInfo": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id for the warehouse.",
            "format": "int32"
          },
          "Type": {
            "type": "integer",
            "description": "The Type internal id for the warehouse. 1 for the standard warehouse, 2 if it is for a store.",
            "format": "int32"
          },
          "Code": {
            "type": "string",
            "description": "The external Code for the warehouse. MaxLength: 50."
          },
          "Name": {
            "type": "string",
            "description": "The Name for the warehouse. MaxLength: 50."
          },
          "IsStandard": {
            "type": "boolean",
            "description": "Indicates if the warehouse is standard or not. Obsolete! - Not used any more."
          },
          "Locations": {
            "type": "array",
            "description": "LocationInfos for the warehouse.",
            "items": {
              "$ref": "#/components/schemas/WarehouseInfoLocation"
            }
          }
        },
        "format": "WarehouseInfo"
      },
      "WarehouseInfoLocation": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id for the location.",
            "format": "int32"
          },
          "Code": {
            "type": "string",
            "description": "The external Code for the location. MaxLength: 50."
          },
          "Name": {
            "type": "string",
            "description": "The Name for the location. MaxLength: 50."
          },
          "IsStandard": {
            "type": "boolean",
            "description": "Indicates if the location is standard or not. Obsolete! - Not used any more."
          },
          "Stores": {
            "type": "array",
            "description": "A list of Stores for this location, if any.",
            "items": {
              "$ref": "#/components/schemas/WarehouseInfoStore"
            }
          }
        },
        "format": "WarehouseInfoLocation"
      },
      "WarehouseInfoStore": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id for the store.",
            "format": "int32"
          },
          "Code": {
            "type": "string",
            "description": "The external Code for the store. MaxLength: 50."
          },
          "Name": {
            "type": "string",
            "description": "The Name for the store. MaxLength: 50."
          }
        },
        "format": "WarehouseInfoStore"
      },
      "ApplicationsCurrency": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Storm Id of the currency.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The name of the currency. MaxLength: 50."
          },
          "Code": {
            "type": "string",
            "description": "The Code of the currency. ISO 4217 is used. SEK for Swedish kronor. MaxLength: 3."
          },
          "Prefix": {
            "type": "string",
            "description": "The Prefix sign/code if available. MaxLength: 10."
          },
          "Suffix": {
            "type": "string",
            "description": "The suffix sign/code if available. MaxLength: 10."
          }
        },
        "format": "ApplicationsCurrency"
      },
      "CustomersFlag": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Flag.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Flag. MaxLength: 50."
          },
          "Group": {
            "type": "integer",
            "description": "The GroupId of the Flag.",
            "format": "int32"
          },
          "IsSelected": {
            "type": "boolean",
            "description": "Indicates if the Flag is selected or not."
          }
        },
        "format": "CustomersFlag"
      },
      "File": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the File.",
            "format": "int32"
          },
          "Type": {
            "type": "integer",
            "description": "The type id of the File. Depending on context and Client. Can be used by Applications to differentiate files for different usages.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the File. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the File. MaxLength: max."
          },
          "Key": {
            "type": "string",
            "description": "A unique id for the File at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          }
        },
        "format": "File"
      },
      "IdNameDescription": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Entity.",
            "format": "int32"
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Entity. MaxLength: 50."
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Entity. MaxLength: 500."
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the Entity. MaxLength: 50."
          }
        },
        "format": "IdNameDescription"
      },
      "IdValue": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Entity. This Id might be different in different tiers such as Stage and Production. Use Code if hard coding is required.",
            "format": "int32"
          },
          "Value": {
            "type": "string",
            "description": "The Value of the Entity. MaxLength: max."
          },
          "Code": {
            "type": "string",
            "description": "The Code of the Entity, if existing. Use this value when hard coding is required. MaxLength: 255."
          }
        },
        "format": "IdValue"
      },
      "ShoppingPromotion": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the Promotion.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Promotion. MaxLength: 255."
          },
          "Header": {
            "type": "string",
            "description": "SubHeader from Storm. MaxLength: 255."
          },
          "ShortDescription": {
            "type": "string",
            "description": "DescriptionHeader from Storm. MaxLength: 255."
          },
          "Description1": {
            "type": "string",
            "description": "Description from Storm. MaxLength: max."
          },
          "Description2": {
            "type": "string",
            "description": "SubDescription from Storm. MaxLength: max."
          },
          "StartDate": {
            "type": "string",
            "description": "The StartDate of the Promotion, if any. Only valid promotions will be returned.",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "The EndDate of the Promotion, if any. Only valid promotions will be returned.",
            "format": "date-time",
            "nullable": true
          },
          "ImageKey": {
            "type": "string",
            "description": "A unique id for the image at our image server. Url for images are formed like http://[client specific CDN]/{ImageKey}. Preset, height and width can be sent as parameters.",
            "format": "guid",
            "nullable": true
          },
          "RequirementSeed": {
            "type": "string",
            "description": "A comma separated list of fulfilled requirements for this promotion. MaxLength: max."
          },
          "DiscountCode": {
            "type": "string",
            "description": "Will contain the discountCode if the promotion has a discountCode requirement. MaxLength: max."
          },
          "IsExcludedFromPriceCalculation": {
            "type": "boolean",
            "description": "A value of true means the promotion was applied last an not included in any price calculations."
          },
          "AllowProductListing": {
            "type": "boolean",
            "description": "This flag can be checked to see whether the promotion allows listing of products from requirements. Use Products.ListProductsByPromotionRequirement to list products. Note that if this property is true and no product requirements exists, no products will be listed."
          },
          "Images": {
            "type": "array",
            "description": "A list of additional images files uploaded for the promotion. Images can be differentiated by using different types. See ListPromotionImageTypes for available types.",
            "items": {
              "$ref": "#/components/schemas/File"
            }
          },
          "ProductFilters": {
            "type": "array",
            "description": "A list of productFilters for the promotion. Can be used to filter or fetch promotions matched by Products. match the products properties against the filter values Each ProductFilter must match all existing values and if any ProductFilter matches the promotion will be valid for that product.",
            "items": {
              "$ref": "#/components/schemas/ShoppingPromotionProductFilter"
            }
          },
          "AppliedAmount": {
            "type": "number",
            "description": "Applied discount amount, excluding VAT, if fetched on AppliedPromotions property on the basket. In that case it will be the sum of all applied amounts on all Basket.Items. This value is rounded to two decimals.",
            "format": "decimal",
            "nullable": true
          },
          "EffectSeed": {
            "type": "string",
            "description": "A comma separated list of applicable effects for this promotion. MaxLength: max."
          },
          "FreightDiscountPct": {
            "type": "number",
            "description": "FreightDiscountPct can be used to calculate external freight prices. The value is given as percentage as 100.00 for 100% discount. Only used for FreightDiscounts.",
            "format": "decimal",
            "nullable": true
          },
          "IsStackable": {
            "type": "boolean",
            "description": "Promotion effect quantity or basket discount is multiplied with how many times requirement is fulfilled."
          },
          "AppliedAmountIncVat": {
            "type": "number",
            "description": "Applied discount amount, including VAT, for this Promotion on this BasketItem.",
            "format": "decimal",
            "nullable": true
          },
          "ExclusivityType": {
            "type": "integer",
            "description": "ExclusivityType allows setting promotions as NotExclusive = 0, Exclusive = 1, or IgnoreExclusivity = 2.",
            "format": "int32"
          },
          "ExternalCode": {
            "type": "string",
            "description": "The external code of the Promotion. This is NOT the discount code. MaxLength: 255."
          }
        },
        "format": "ShoppingPromotion"
      },
      "ShoppingPromotionProductFilter": {
        "type": "object",
        "properties": {
          "ManufacturerId": {
            "type": "integer",
            "description": "An optional Manufacturer internal id for filtered products.",
            "format": "int32",
            "nullable": true
          },
          "CategorySeed": {
            "type": "string",
            "description": "An optional CategorySeed for filtered products. MaxLength: int."
          },
          "TypeId": {
            "type": "integer",
            "description": "An optional SKU Type internal id for filtered products.",
            "format": "int32",
            "nullable": true
          },
          "ProductId": {
            "type": "integer",
            "description": "An optional Product internal id for filtered products.",
            "format": "int32",
            "nullable": true
          },
          "VariantProductId": {
            "type": "integer",
            "description": "An optional VariantProduct internal id for filtered products. Equal to use PartNo.",
            "format": "int32",
            "nullable": true
          },
          "PartNo": {
            "type": "string",
            "description": "An optional PartNo for filtered products. Equal to use VariantProductId. MaxLength: 50."
          },
          "PricelistId": {
            "type": "integer",
            "description": "An optional pricelist internal id for filtered products.",
            "format": "int32",
            "nullable": true
          },
          "FlagId": {
            "type": "integer",
            "description": "An optional Flag internal id for filtered products. Only set if flagId is inclusive.",
            "format": "int32",
            "nullable": true
          }
        },
        "format": "ShoppingPromotionProductFilter"
      },
      "IFilterItem": {
        "required": [
          "__type"
        ],
        "type": "object",
        "properties": {
          "__type": {
            "type": "string"
          }
        },
        "format": "IFilterItem",
        "discriminator": {
          "propertyName": "__type"
        }
      }
    }
  },
  "x-original-swagger-version": "2.0"
}