{
  "openapi": "3.0.1",
  "info": {
    "title": "Norce Commerce Shopping v1.1 service",
    "description": "Entities and methods to handle baskets and payments. The Shopping service is used to create and manage baskets, and prepare them for the checkout process. Commonly the checkout process is handled by the Norce Checkout API, only the legacy checkout process is handled here. For product or pricing data, use the Product service. For order history, use the Order service. To change or manage promotions use the Management API.",
    "version": "1.1"
  },
  "servers": [
    {
      "url": "https://{slug}.api-se.playground.norce.tech/commerce",
      "description": "Playground",
      "variables": {
        "slug": {
          "default": "customer-slug",
          "description": "Replace with your slug."
        }
      }
    },
    {
      "url": "https://{slug}.api-se.stage.norce.tech/commerce",
      "description": "Stage",
      "variables": {
        "slug": {
          "default": "customer-slug",
          "description": "Replace with your slug."
        }
      }
    },
    {
      "url": "https://{slug}.api-se.norce.tech/commerce",
      "description": "Production",
      "variables": {
        "slug": {
          "default": "customer-slug",
          "description": "Replace with your slug."
        }
      }
    }
  ],
  "security": [
    {
      "Bearer": [],
      "ApplicationId": []
    }
  ],
  "tags": [
    {
      "name": "Basket",
      "description": "Contains endpoints for manage baskets and their lifecycle, see more information [here](/developer-portal/app-development/working-with-baskets)."
    },
    {
      "name": "Checkout",
      "description": "Contains endpoints for initialized the checkout process, read more about it [here](/developer-portal/app-development/working-with-the-checkout-process). There is also the old legacy purchase endpoints, still used by older solutions and Non-PSP purchases."
    },
    {
      "name": "DeliveryMethods",
      "description": "Contains endpoints for viewing metadata about configured delivery methods, when using Norces internal shipping logic."
    },
    {
      "name": "InfoTypes",
      "description": "Contains endpoints for viewing metadata for extended fields on the basket and basketitems."
    },
    {
      "name": "OnHand",
      "description": "Contains endpoints for looking up availability on baskets."
    },
    {
      "name": "OrderRequest",
      "description": "Contains endpoints for viewing orders snapshots."
    },
    {
      "name": "Payments",
      "description": "Contains endpoints for legacy purchases, still used by older solutions and Non-PSP purchases."
    },
    {
      "name": "Promotions",
      "description": "Contains endpoints for viewing more promotion information."
    }
  ],
  "paths": {
    "/shopping/1.1/ClearBasket": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Clear basket",
        "description": "Removes all items from the basket.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The internal id of the basket to clear.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Specifies in which currency internal id to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/CreateBasket": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Create basket",
        "description": "Creates a new Basket.",
        "parameters": [
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The ip-address of the end user.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "createdBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Specifies in which internal currency id to display prices. If none is supplied, value is resolved from Application. Note that if price is specified on items, then it must be in the same currency.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) The Basket to create. Pass in null or an empty Basket to create a new empty Basket. See Basket for what properties can be used when creating baskets.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Basket"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/DeleteBasketItem": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Remove item from basket",
        "description": "Remove a specific item/line from a basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to delete the item from.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "lineNo",
            "in": "query",
            "description": "The line number of the item to delete. Any items with this lineNo as ParentLineNo wil also be deleted.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/GetBasket": {
      "get": {
        "tags": [
          "Basket"
        ],
        "summary": "Get a basket",
        "description": "Gets a Basket by id. Returns null if not found.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The basket id of the Basket to fetch.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListBasketsByStatus": {
      "get": {
        "tags": [
          "Basket"
        ],
        "summary": "List baskets by status",
        "description": "Returns a paged basket list for specified customer, company or sales contact.",
        "parameters": [
          {
            "name": "companyId",
            "in": "query",
            "description": "(Optional) The internal company id for which baskets are fetched. Either this a customerId or salesContactId must be specified.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "(Optional) The internal customer id for which baskets are fetched. Either this a companyId or salesContactId must be specified.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "salesContactId",
            "in": "query",
            "description": "(Optional) The internal salesContact id for which baskets are fetched. Either this a companyId or customerId must be specified.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statusId",
            "in": "query",
            "description": "The internal id for the status to fetch.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNo",
            "in": "query",
            "description": "(Optional) 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "(Optional) Number of items to display per page. Mandatory if using pageNo.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasketPagedList"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListSavedBaskets": {
      "get": {
        "tags": [
          "Basket"
        ],
        "summary": "List saved baskets for a customer",
        "description": "List saved baskets for a specific customer",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "The internal customer id of the customer. The id is used to fetch saved baskets.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedBasket"
                  },
                  "description": "List of saved baskets. It is used in lists."
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/SaveBasket": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Save a basket",
        "description": "Save a initiated basket",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "The internal customer id of the customer. The id is used to fetch saved baskets.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to save.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "The name of the saved basket.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedBasket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/DeleteSavedBasket": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Delete a saved basket",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "The internal customer id of the customer. The id is used to fetch saved baskets.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the saved basket to delete.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SavedBasket"
                  },
                  "description": "List of saved baskets. It is used in lists."
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/InsertBasketItem": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Insert an item in a basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket to insert the item into.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "createdBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application. Note that if price is specified on item to insert, then it must be in the same currency.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The item to insert must have its PartNo, Quantity and PriceListId set. ParentLineNo, Name, Comment, ReferId and ReferUrl can be used if other values than the default are wanted. All other properties will be populated from the system.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BasketItem"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/InsertBasketItems": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Insert several items into a basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket to insert the item into.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "createdBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application. Note that if price is specified on item to insert, then it must be in the same currency.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The items to insert must have its PartNo, Quantity and PriceListId set. ParentLineNo, Name, Comment, ReferId and ReferUrl can be used if other values than the default are wanted. All other properties will be populated from the system.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BasketItem"
                },
                "description": "List of basket items. It is used in Basket.Items."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/InsertBasketItemWithChildren": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Insert a structure item into basket",
        "description": "Used to insert a structure article into basket with calculation of it's children",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket to insert the item into.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "createdBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application. Note that if price is specified on item to insert, then it must be in the same currency.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "A list of items to insert. The first item is the parent and the following are inserted as children. The items to insert must have their PartNo, Quantity and PriceListId set. ParentLineNo, Name, Comment, ReferId and ReferUrl can be used if other values than the default are wanted. All other properties will be populated from the system.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BasketItem"
                },
                "description": "List of basket items. It is used in Basket.Items."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateBasket2": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Update a basket (v2)",
        "description": "Updates status, contact, order reference, comment, discount code, currencyCode and sales area. Does not update any customer data. Use UpdateBuyer/UpdatePayer/UpdateShipTo to change customer data for a Basket.",
        "parameters": [
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The basket to update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Basket"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/SetAttestBasket": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Attest a basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket to attest.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/DeleteBasket": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Delete a basket",
        "description": "Sets the status of the basket to Deleted. Deleted baskets will not be available in the API. Only normal baskets can be deleted.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to delete. Note that this id should be removed from future references.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateBasketItem": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Update a basket item",
        "description": "Updates a BasketItem on the specified basket. Don't propagate quantity updates to child items. Use UpdateBasketItemQuantityWithChildren for updating basket item with child items if you want all child items to follow parent item quantity update.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application. Note that if price is specified on item to update, then it must be in the same currency.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The BasketItem to update. If quantity is zero it and it's child items will be deleted. Otherwise only Quantity, Comment, Name and Info fields will be updated. To update the Price set Price and IsPriceManual.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BasketItem"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateBasketItems": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Update several basket items",
        "description": "Updates all supplied BasketItems on the specified basket.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application. Note that if price is specified on item to update, then it must be in the same currency.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "A list of BasketItems to update. If quantity is zero it and it's child items will be deleted. Otherwise only Quantity, Comment, Name and Info fields will be updated. To update the Price set Price and IsPriceManual.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/BasketItem"
                },
                "description": "List of basket items. It is used in Basket.Items."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateBasketItemQuantityWithChildren": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Update a structure basket item quantity",
        "description": "Updates quantity of basket item and multiplies child items quantity so they follow the quantity change of the parent item.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "lineNo",
            "in": "query",
            "description": "The line on which to update the quantity.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "quantity",
            "in": "query",
            "description": "New quantity of the line.",
            "style": "form",
            "schema": {
              "type": "number",
              "format": "decimal"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/CloseBasketForPostPurchaseUpsell": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Close basket for post purchases",
        "description": "Closes the basket for post purchase.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to close.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/InsertItemsPostPurchase": {
      "post": {
        "tags": [
          "Basket"
        ],
        "summary": "Insert items into a basket post purchase",
        "description": "Adds the provided items to the already checked out basket and updates the authorization for the payment. Calling this mehtod will close the basket.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The data needed to insert items post purchase",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InsertItemsPostPurchaseData"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/IsPostPurchasePossible": {
      "get": {
        "tags": [
          "Basket"
        ],
        "summary": "Check if post purchase is possible",
        "description": "Should be called before deciding whether to show post purchase functionality on the redirect page. This call is needed becuase it is not until the purchase is done that we can anwser this. Note that even if we anwser yes here the call to InsertItemsPostPurchase might fail regardless, since the PSP can reject the update even if it should be possible (due to risk assesments etc).",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to check post purchase possibility for.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListBasketStatuses": {
      "get": {
        "tags": [
          "Basket"
        ],
        "summary": "List basket statuses",
        "description": "Lists the available basket statuses.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListBasketTypes": {
      "get": {
        "tags": [
          "Basket"
        ],
        "summary": "List basket types",
        "description": "Lists the available basket types.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdNameDescription"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/GetCheckout": {
      "get": {
        "tags": [
          "Checkout"
        ],
        "summary": "Get checkout object for a basket",
        "description": "Get a checkout object for a specific basket.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket for which to create a checkout object.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/GetCheckout2": {
      "get": {
        "tags": [
          "Checkout"
        ],
        "summary": "Get checkout object for a basket (v2)",
        "description": "Get a checkout object for a specific basket.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket for which to create a checkout object.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/GetPaymentForm": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Get a checkout for form based payments",
        "description": "GetPaymentForm starts a forms based checkout by populating a code snippet in some of the RedirectParameters. If the checkout supports modifications of the Norce basket in any way, a new call to GetPaymentForm must be made in order to update the code snippet with correct values. See <a target=\"_blank\" href=\"https://docs.norce.io/developer-portal/app-development/working-with-the-checkout-process/#form-based-payments\">Checkout Form Payment</a> for more information about the checkout process.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket used in the checkout.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The ipaddress of the current user. This should not be the ip of the application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userAgent",
            "in": "query",
            "description": "The userAgent of the current user's browser or application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) General: 'parameter'='value' to override payment parameters. See developer documentation tab in admin payment settings for reference of what parameters can be set..",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentGiftCardCheck": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Check balance of gift card",
        "description": "PaymentGiftCardCheck checks current balance of a gift card. The balance is returned in Response.RedirectParameters with name = 'Balance'. The Currency is returned with name = 'CurrencyCode'.",
        "parameters": [
          {
            "name": "cardNo",
            "in": "query",
            "description": "The card number to make reservation on.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cvc",
            "in": "query",
            "description": "The cvc of the card to make reservation on.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentMethodId",
            "in": "query",
            "description": "",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/Purchase": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Purchase a basket",
        "description": "Purchase a basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the current basket.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The user's ipAddress.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userAgent",
            "in": "query",
            "description": "The user agent of the user's browser.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/CreatePayment": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Create a payment",
        "description": "Used when adding payments to a PayLater type of transaction.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the current basket.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The user's ipAddress.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userAgent",
            "in": "query",
            "description": "The user agent of the user's browser.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "amount",
            "in": "query",
            "description": "The amount being paid.",
            "style": "form",
            "schema": {
              "type": "number",
              "format": "decimal"
            }
          },
          {
            "name": "paymentMethod",
            "in": "query",
            "description": "The payment method used to pay.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) General: 'parameter'='value' to override payment parameters. See developer documentation tab in admin payment settings for reference of what parameters can be set..",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PurchaseEx": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Purchase a basket (extended)",
        "description": "PurchaseEx works as Purchase with the additional parameter paymentParameters. This method should be used when overriding the configured values for selected payment methods. See <a target=\"_blank\" href=\"https://docs.norce.io/developer-portal/app-development/working-with-the-checkout-process/#purchase-and-payments\">Payments</a> for more information about the checkout process.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the current basket.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The user's ipAddress.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userAgent",
            "in": "query",
            "description": "The user agent of the user's browser.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) General: 'parameter'='value' to override payment parameters. See developer documentation tab in admin payment settings for reference of what parameters can be set..",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PurchaseEx2": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Purchase a basket (extended, v2)",
        "description": "PurchaseEx2 works as Purchase with the additional parameter paymentParameters. This method should be used when overriding the configured values for selected payment methods. See <a target=\"_blank\" href=\"https://docs.norce.io/developer-portal/app-development/working-with-the-checkout-process/#purchase-and-payments\">Payments</a> for more information about the checkout process.",
        "parameters": [
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The user's ipAddress.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userAgent",
            "in": "query",
            "description": "The user agent of the user's browser.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Extended data object to the PSP for this purchase.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseEx2Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateBuyer": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update buyer information",
        "description": "Updates Buyer information on a basket. If no Payer is associated with the Basket or the Payer is the same as the Buyer then Payer will also be updated. The same applies to ShipTo.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Customer to use as Buyer. The Customer can optionally have one Company. If more than one Company is specified, the first will be used. Addresses will be resolve by first looking at the Company and then on the Customer. See UpdatePayer and UpdateShip on details regarding updating these address types.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateBuyer2": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update buyer information (v2)",
        "description": "Updates Buyer information on a basket. If no Payer is associated with the Basket or the Payer is the same as the Buyer then Payer will also be updated. The same applies to ShipTo.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Customer to use as Buyer. The Customer can optionally have one Company. If more than one Company is specified, the first will be used. Addresses will be resolve by first looking at the Company and then on the Customer. See UpdatePayer and UpdateShip on details regarding updating these address types.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdatePayer": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update payer information",
        "description": "Updates Payer information on a basket. This should be used when Payer differs from Buyer.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Customer to use as Payer. The Customer can optionally have one Company. If more than one Company is specified, the first will be used. Addresses will be resolve by first looking at the Company and then on the Customer. If no invoice address is specified no address will be used.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdatePayer2": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update payer information (v2)",
        "description": "Updates Payer information on a basket. This should be used when Payer differs from Buyer.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Customer to use as Payer. The Customer can optionally have one Company. If more than one Company is specified, the first will be used. Addresses will be resolve by first looking at the Company and then on the Customer. If no invoice address is specified no address will be used.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateShipTo": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update delivery information",
        "description": "Updates ShipTo information on a basket. This should be used when ShipTo differs from Buyer.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Customer to use as ShipTo. The Customer can optionally have one Company. If more than one Company is specified, the first will be used. Addresses will be resolve by first looking at the Company and then on the Customer. If no delivery address is specified, the invoice address will be used as delivery address. If more than one delivery address is specified, the first will be used.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateShipTo2": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update delivery information (v2)",
        "description": "Updates ShipTo information on a basket. This should be used when ShipTo differs from Buyer.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "updatedBy",
            "in": "query",
            "description": "Account internal id of current user.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The actual Customer to use as ShipTo. The Customer can optionally have one Company. If more than one Company is specified, the first will be used. Addresses will be resolve by first looking at the Company and then on the Customer. If no delivery address is specified, the invoice address will be used as delivery address. If more than one delivery address is specified, the first will be used.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateDeliveryMethod": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update delivery method",
        "description": "Updates the selected DeliveryMethod on a basket. The DeliveryMethod id should be taken from any valid DeliveryMethod in Checkout.DeliveryMethods.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deliveryMethodId",
            "in": "query",
            "description": "The internal id of the DeliveryMethod to select.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateDeliveryMethod3": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update delivery method (v3)",
        "description": "Updates the selected DeliveryMethod on a basket. The DeliveryMethod id should be taken from any valid DeliveryMethod in Checkout.DeliveryMethods.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deliveryMethodId",
            "in": "query",
            "description": "The internal id of the DeliveryMethod to select.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dropPointCode",
            "in": "query",
            "description": "(Optional) The ID of the selected DropPoint (can be null if the deliverymethod does not support it).",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdateDeliveryMethod4": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update delivery method (v4)",
        "description": "Updates the selected DeliveryMethod on a basket. The DeliveryMethod id should be taken from any valid DeliveryMethod in Checkout.DeliveryMethods.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The BasketDeliveryMethodUpdate to use when updating the DeliveryMethod for the basket.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BasketDeliveryMethodUpdate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdatePaymentMethod": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update payment method",
        "description": "Updates the selected payment on a basket. The payment id should be taken from any valid PaymentMethod in Checkout.PaymentMethods.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paymentMethodId",
            "in": "query",
            "description": "The internal id of the PaymentMethod to select.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/UpdatePaymentMethod2": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "summary": "Update payment method (v2)",
        "description": "Updates the selected payment on a basket. The payment id should be taken from any valid PaymentMethod in Checkout.PaymentMethods.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket to update.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "paymentMethodId",
            "in": "query",
            "description": "The internal id of the PaymentMethod to select.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Checkout"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListDeliveryMethodsByProduct2": {
      "get": {
        "tags": [
          "DeliveryMethods"
        ],
        "summary": "List delivery methods by product",
        "parameters": [
          {
            "name": "productId",
            "in": "query",
            "description": "The internal product id for the product to list available delivery methods for.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "countryId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which country. If none is supplied, value is resolved from Application default.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zip",
            "in": "query",
            "description": "Zip code for filtration.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "(Optional) Current internal customer id, checks for specific customer bound delivery methods.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "(Optional) Current internal company id, checks for specific company bound delivery methods.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryMethod"
                  },
                  "description": "List of delivery methods. It is used in lists."
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListDeliveryMethodsByBasket": {
      "get": {
        "tags": [
          "DeliveryMethods"
        ],
        "summary": "List delivery methods by basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal basket id.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "countryId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which country. If none is supplied, value is resolved from Application default.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zip",
            "in": "query",
            "description": "Zip code for filtration.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryMethod"
                  },
                  "description": "List of delivery methods. It is used in lists."
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListDeliveryMethodsByBasket2": {
      "get": {
        "tags": [
          "DeliveryMethods"
        ],
        "summary": "List delivery methods by basket",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal basket id.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "countryId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which country. If none is supplied, value is resolved from Application default.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zip",
            "in": "query",
            "description": "Zip code for filtration.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Internal id that specifies in which currency to display prices. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DeliveryMethod"
                  },
                  "description": "List of delivery methods. It is used in lists."
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListBasketInfoTypes": {
      "get": {
        "tags": [
          "InfoTypes"
        ],
        "summary": "List basket info types",
        "description": "Lists the info type ids used in Basket.Info.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListBasketItemInfoTypes": {
      "get": {
        "tags": [
          "InfoTypes"
        ],
        "summary": "List basket item info types",
        "description": "Lists the info type ids used in Basket.Items.Info.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListProductOnHandByBasket": {
      "post": {
        "tags": [
          "OnHand"
        ],
        "summary": "List availability on products in basket",
        "description": "Lists OnHand data based on basket items. Only deliverable items will be regarded. The result is a list of ProductOnHand where each product has a list of warehoues matching the warehouse specification passed in. ProductOnHand.Variants will always be null when getting this data for a basket. OnHand for each warehouse will always be returned whether or not the warehouse has the item or not. OnHand.IsActive = false indicates the item does not exist at the warehouse so only active OnHands should be used when checking availability.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal basket id.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currencyId",
            "in": "query",
            "description": "(Optional) Ignored.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) An Warehouse if OnHand for a specific store is wanted. If standard warehouse (web) is wanted just pass null.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Warehouse"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProductOnHand"
                  },
                  "description": "The ProductOnHandList is a list of ProductOnHands. It is used in lists."
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/GetOrderRequest": {
      "get": {
        "tags": [
          "OrderRequest"
        ],
        "summary": "Get order request",
        "description": "GetOrderRequest can be used on any 'Thanks for you order page' to get the actual order request used when creating the order. This can be used in combination with GetCheckout to get the last Checkout object as well.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket used in the checkout.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentFormCallback": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payment callback for form based payments",
        "description": "PaymentFormCallback is called from applications using forms based checkouts with support for callbacks. Applications gets called when the end-user gets routed back to a 'Thanks for you order page' and the applications should make this call to the API before routing. See <a target=\"_blank\" href=\"https://docs.norce.io/developer-portal/app-development/working-with-the-checkout-process/#form-based-payments\">Checkout Form Payments</a> for more information about the checkout process.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal id of the basket used in the checkout.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) General: 'parameter'='value' to override payment parameters. See developer documentation tab in admin payment settings for reference of what parameters can be set..",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentFormComplete": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payment complete call for form based payments",
        "description": "PaymentFormComplete is called directly from any PSP supporting forms based checkouts with support for completes. Applications should never make this call directly.",
        "requestBody": {
          "description": "(Optional) General: 'parameter'='value' to override payment parameters. See developer documentation tab in admin payment settings for reference of what parameters can be set..",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentGiftCardReserve": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Reserve amount on gift card",
        "description": "Reserve an amount on a gift card.",
        "parameters": [
          {
            "name": "cardNo",
            "in": "query",
            "description": "The card number to make reservation on.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cvc",
            "in": "query",
            "description": "The cvc of the card to make reservation on.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "basketId",
            "in": "query",
            "description": "Internal id of the basket to associate with this reservation.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ipAddress",
            "in": "query",
            "description": "The user's ipAddress.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "userAgent",
            "in": "query",
            "description": "The user agent of the user's browser.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) General: 'parameter'='value' to override payment parameters. See developer documentation tab in admin payment settings for reference of what parameters can be set..",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentGiftCardRollback": {
      "post": {
        "tags": [
          "Payments"
        ],
        "requestBody": {
          "description": "General: 'cancelreason'=must contain something, preferably a text. 'paymentcode'=paymentcode return by PaymentGiftCardReserve.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentCallback": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payment callback call",
        "description": "This method should be called when receiving a callback from the payment provider. The paymentParameters should be populated with received parameters. This method creates the order. If order should be created on report from payment service provider then use PaymentCallback2. See <a target=\"_blank\" href=\"https://docs.norce.io/developer-portal/app-development/working-with-the-checkout-process/#two-step-payments\">Payments</a> for more information about the checkout process.",
        "requestBody": {
          "description": "Parameter 'PaymentService' is mandatory. Other values are provided by the payment provider in their call and possible parameter names be found for each PSP in Norce Admin. General: 'test'=true to enable tests.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentCallback2": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payment callback call (v2)",
        "description": "This method should be called when receiveing a callback from the payment provider. The paymentParameters should be populated with received parameters. This method does not create the order. The report from the payment service provider must be handled with PaymentComplete to create the order. See <a target=\"_blank\" href=\"https://docs.norce.io/developer-portal/app-development/working-with-the-checkout-process/#two-step-payments\">Payments</a> for more information about the checkout process.",
        "requestBody": {
          "description": "Parameter 'PaymentService' is mandatory. Other values are provided by the payment provider in their call and possible parameter names be found for each PSP in Norce Admin. General: 'test'=true to enable tests.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentComplete": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payment complete call",
        "description": "This method should be called when receiving a http-report from the payment service provider. The paymentParameters should be populated with received parameters. This method creates the order. PSPs calls the API directly and this method should never be called directly from the application.",
        "requestBody": {
          "description": "Supported values are 'orderref' and 'transactionnumber'. These values are provided by the payment provider in their call. General: 'test'=true to enable tests.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentCancel": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Cancel a payment",
        "description": "This method should be called when receiving a callback from the payment provider when the payment has been cancelled in some way.",
        "requestBody": {
          "description": "The basket that the payment should be cancelled for.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Basket"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Basket"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentValidate": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Validate a payment",
        "description": "This method gets called from PSPs supporting validation callbacks. Norce API makes a preliminary validation by validating the checkout. Checks are for basket status and valid promotions plus all other validations with regard to customer information. No result is returned if validation passes and an exception with both Exceptions below aggregated will be raised if any validation fails.",
        "requestBody": {
          "description": "These values are provided by the PSP. If the initial PaymentParameters, to PurchaseEx or GetPaymentForm, contained ValidationUrl, Norce API will post a checkout object to that url giving the application a possibility to perform additional validations, such as checking availability. If validation succeeds just return an empty result with HttpStatus 200. Failed validations should give a 400 with the message in the content body. Pass ValidationContentType to specify content type of the posted checkout. Supported values are 'application/json' or 'text/xml'. 'text/xml' is default if not specified. CancelUrl must also be specified in order to handle any validation fail messages. The post to validationUrl supports basic authentication. Just add 'username:password@' to the url.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/PaymentValidate2": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Validate a payment (v2)",
        "description": "This method gets called from PSPs supporting validation callbacks. Norce API makes a preliminary validation by validating the checkout. Checks are for basket status and valid promotions plus all other validations with regard to customer information. No result is returned if validation passes and an exception with both Exceptions below aggregated will be raised if any validation fails.",
        "parameters": [
          {
            "name": "pricelistSeed",
            "in": "query",
            "description": "(Optional) A comma separated list of internal 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.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "These values are provided by the PSP. If the initial PaymentParameters, to PurchaseEx or GetPaymentForm, contained ValidationUrl, Norce API will post a checkout object to that url giving the application a possibility to perform additional validations, such as checking availability. If validation succeeds just return an empty result with HttpStatus 200. Failed validations should give a 400 with the message in the content body. Pass ValidationContentType to specify content type of the posted checkout. Supported values are 'application/json' or 'text/xml'. 'text/xml' is default if not specified. CancelUrl must also be specified in order to handle any validation fail messages. The post to validationUrl supports basic authentication. Just add 'username:password@' to the url.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NameValue"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorMessage_v1_1"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListPromotionRequirementTypes": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List promotion requirement types",
        "description": "Lists the ids for all supported promotion requirement types.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListPromotionImageTypes": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List promotion image types",
        "description": "Lists the ids for all supported promotion image types.",
        "parameters": [
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/GetPromotion": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "Get a promotion",
        "description": "Gets a promotion.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "(Optional) Internal id of promotion",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Promotion"
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListPromotions": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List active promotions",
        "description": "Lists active promotions.",
        "parameters": [
          {
            "name": "excludeRequirementSeed",
            "in": "query",
            "description": "(Optional) Specifies a comma separated list of requirements. If none is supplied, all promotions will be returned. Otherwise promotions will be filtered on those not having any of the requirements.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Promotion"
                  },
                  "description": "List of Promotions. It is used in lists and in basket.AppliedPromotions."
                }
              }
            }
          }
        }
      }
    },
    "/shopping/1.1/ListPromotionsByBasket": {
      "get": {
        "tags": [
          "Promotions"
        ],
        "summary": "List promotions by basket",
        "description": "Lists all promotions where any BasketItem is either in a requirement or in an effect for the promotion. Fulfilled promotions are excluded from the result. Promotions based on discount codes, customer or company are also excluded. This can be used to display promotions not yet fulfilled in a Checkout.",
        "parameters": [
          {
            "name": "basketId",
            "in": "query",
            "description": "The internal basket id.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cultureCode",
            "in": "query",
            "description": "(Optional) Specifies in which language to display culture specific information. If none is supplied, value is resolved from Application.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Promotion"
                  },
                  "description": "List of Promotions. It is used in lists and in basket.AppliedPromotions."
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Account": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Account. This value should be used as updatedBy/createdBy in API-Methods. When creating a new Account on a Customer leave this blank as Norce will generate the Id.",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key for the Account.",
            "format": "uuid",
            "nullable": true
          },
          "LoginName": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "This is the login name used when logging in. Normally this is the email address. Care must be taken when user updates their emailAddress. Normally this update is just for Customer.Email. It is up to the Application to keep Customer.Email in sync with Account.LoginName if they are the same. MaxLength: 255",
            "nullable": true
          },
          "Name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "This is the full name of the connected Customer's first and last name. MaxLength: 100",
            "nullable": true
          },
          "Roles": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "This is an integer list of Role.Ids. See Application.Roles for available roles for the Application. This can be used to authorize roles to different parts of an Application.",
            "nullable": true
          },
          "Authorizations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "This is an IdValue list of Authorizations. See Application.Authorizations for available values for the Application. This can be used to authorize users to different parts of an Application.",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "Indicates if the Account is Active or not. Use UpdateAccountStatus to change this value.",
            "nullable": true
          },
          "NewPassword": {
            "type": "string",
            "description": "New password that can be set when creating or updating a customer.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An Account is related to a Customer. Each Account can belong to only one Application. When creating Customers you need to define a Customer.Account if you want the customer to be able to login. This is useful when the application supports My page with order history and such."
      },
      "Address": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Address. When creating a new Address leave this blank as Norce will generate the Id.",
            "format": "int32",
            "nullable": true
          },
          "CareOf": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The CareOf of the Address. MaxLength: 100",
            "nullable": true
          },
          "Line1": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The first address line of the Address. MaxLength: 255",
            "nullable": true
          },
          "Line2": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The second address line of the Address. MaxLength: 255",
            "nullable": true
          },
          "Zip": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The zip code of the Address. MaxLength: 50",
            "nullable": true
          },
          "City": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The City of the Address. MaxLength: 50",
            "nullable": true
          },
          "CountryId": {
            "type": "integer",
            "description": "The internal Id for the country associated to the Address. When creating or updating Country on an Address either specify the CountryId or just the Country string. If Id is specified it will be used to resolve the Name. If none is specified the default for the Application will be used.",
            "format": "int32",
            "nullable": true
          },
          "Country": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The country name of the Address. When creating or updating Country on an Address either specify the CountryId or just the Country string. If Name is specified it will be used to resolve the Name and Id. Name should then be specified as Country.Code since Names are culture specific. If none is specified the default for the Application will be used. MaxLength: 50",
            "nullable": true
          },
          "Region": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The Region of the Address. MaxLength: 50",
            "nullable": true
          },
          "IsValidated": {
            "type": "boolean",
            "description": "Indicates if the address had been validated. It is up to the Application to validate addresses. Use normal address-methods to update this value.",
            "nullable": true
          },
          "GlobalLocationNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The Global Location Number (GLN) is part of the GS1 systems of standards. It is a simple tool used to identify a location and can identify locations uniquely where required. This is only used for invoice addresses. MaxLength: 50",
            "nullable": true
          },
          "ShippingPhoneNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Phone number for shipping address. Only applicable in shipping addresses. MaxLength: 50",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "An external Code of the Address identifying this addess to external address.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about an address. Addresses appear as InvoiceAddress or DeliveryAddresses or when ever an Address is needed"
      },
      "AppliedPromotionOnItem": {
        "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.",
            "nullable": true
          },
          "DiscountCode": {
            "type": "string",
            "description": "Will contain the discountCode if the promotion has a discountCode requirement.",
            "nullable": true
          },
          "AppliedAmount": {
            "type": "number",
            "description": "Applied discount amount, excluding VAT, for this Promotion on this BasketItem.",
            "format": "decimal",
            "nullable": true
          },
          "AppliedAmountIncVat": {
            "type": "number",
            "description": "Applied discount amount, including VAT, for this Promotion on this BasketItem.",
            "format": "decimal",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "AppliedPromotionOnItem entity represents promotions applied on Basket.Items. Only Basket.Items with any promotions applied will have any."
      },
      "Basket": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the basket. Used to get a specific basket. Ignored in CreateBasket.",
            "format": "int32",
            "nullable": true
          },
          "CustomerId": {
            "type": "integer",
            "description": "The customer internal id for a specific customer associated with this basket. This can be set in CreateBasket if the user is logged in. Otherwise use UpdateBuyer to set customer.",
            "format": "int32",
            "nullable": true
          },
          "CompanyId": {
            "type": "integer",
            "description": "The company internal id for a specific company associated with this basket. This can be set in CreateBasket if the user is logged in with a company. Otherwise use UpdateBuyer to set customer and company.",
            "format": "int32",
            "nullable": true
          },
          "SalesContactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "StatusId": {
            "type": "integer",
            "description": "Internal id for the current status of the basket. See ListBasketStatuses.",
            "format": "int32",
            "nullable": true
          },
          "CurrencyId": {
            "type": "integer",
            "description": "The currency internal id of the basket. This defines the currency used when processing payments. Can be set when creating a Basket or change later with UpdateBasket. Use either CurrencyId or CurrencyCode. If not specified, the default for the Application will be used.",
            "format": "int32",
            "nullable": true
          },
          "CurrencyCode": {
            "maxLength": 3,
            "minLength": 0,
            "type": "string",
            "description": "The CurrencyCode of the basket. This defines the currency used when processing payments. Can be set when creating a Basket or change later with UpdateBasket. Use either CurrencyId or CurrencyCode. If not specified, the default for the Application will be used. MaxLength: 3",
            "nullable": true
          },
          "Comment": {
            "maxLength": 250,
            "minLength": 0,
            "type": "string",
            "description": "Free text comment that will be propagated to the order. MaxLength: 250",
            "nullable": true
          },
          "OrderReference": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "An OrderReference which will be tagged on the order. Can be set in CreateBasket or updated in UpdateBasket. MaxLength: 50",
            "nullable": true
          },
          "DiscountCode": {
            "type": "string",
            "description": "A comma separated list of used discount codes. To clear the value set it to null or String.Empty an call UpdateBasket.",
            "nullable": true
          },
          "ReferId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ReferUrl": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "MaxLength: 255",
            "nullable": true
          },
          "ValidTo": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "IsEditable": {
            "type": "boolean",
            "description": "Specifies if the basket is editable. If not, any method that changes the basket will throw Exceptions (Bad Request). It will be false when the basket is no longer a basket. That is when it's paid for or cancelled.",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BasketItem"
            },
            "description": "List of the items in the basket.",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtraInfo"
            },
            "description": "List of information types with values that may be propagated on the order.",
            "nullable": true
          },
          "Summary": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Summary"
              }
            ],
            "nullable": true
          },
          "AppliedPromotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Promotion"
            },
            "description": "Contains all Promotions valid for a Basket, whether or not they are applied. If any promotions are applied more info about them are added to the corresponding Basket.Items.",
            "nullable": true
          },
          "IpAddress": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The user's IpAddress when the basket was created. The value should be fetched from the user request to the application. MaxLength: 50",
            "nullable": true
          },
          "AttestedBy": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "TypeId": {
            "type": "integer",
            "description": "The internal type id of the Basket. Can be 1 = Basket, 2 = Saved Basket, 3 = Template Basket for Subscriptions.",
            "format": "int32",
            "nullable": true
          },
          "DoHold": {
            "type": "boolean",
            "description": "DoHold specifies if the resulting order should be on hold until all items on the order can be shipped or not. Default is false. This can be set in the Checkout with UpdateBasket if the Customer does not want part deliveries.",
            "nullable": true
          },
          "IsBuyable": {
            "type": "boolean",
            "description": "IsBuyable is a rule based property indicating if the Basket's status allows the basket to be purchased. It should be regarded as readonly.",
            "nullable": true
          },
          "InvoiceReference": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "An InvoiceReference which will be tagged on the order. Can be set in CreateBasket or updated in UpdateBasket. MaxLength: 50",
            "nullable": true
          },
          "PaymentMethodId": {
            "type": "integer",
            "description": "The PaymentMethodId from Norce. Can be set in CreateBasket or updated in UpdatePaymentMethod.",
            "format": "int32",
            "nullable": true
          },
          "DeliveryMethodId": {
            "type": "integer",
            "description": "The DeliveryMethodId from Norce. Can be set in CreateBasket or updated in UpdateDeliveryMethod.",
            "format": "int32",
            "nullable": true
          },
          "SalesAreaId": {
            "type": "integer",
            "description": "The SalesArea internal id of the basket. This defines the default VAT-rate used. Can be set when creating a Basket or change later with UpdateBasket. If not specified, the default for the Application will be used.",
            "format": "int32",
            "nullable": true
          },
          "ExternalDiscountCode": {
            "type": "string",
            "description": "A comma separated list of used external discount codes. To clear the value set it to null or String.Empty and call UpdateBasket.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a basket where you can add/remove/update items and information such as discountcodes and pass forward information types."
      },
      "BasketDeliveryMethodUpdate": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the DeliveryMethod.",
            "format": "int32",
            "nullable": true
          },
          "Price": {
            "type": "number",
            "description": "The Price of the DeliveryMethod, excluding VAT. Prices set here will be handled as manual prices. If no prices are set the Price will be taken from Norce and be treated as a normal price.",
            "format": "decimal",
            "nullable": true
          },
          "PriceIncVat": {
            "type": "number",
            "description": "The Price of the DeliveryMethod, including VAT. Prices set here will be handled as manual prices. If this is set it will override Price.",
            "format": "decimal",
            "nullable": true
          },
          "DropPoint": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DropPoint"
              }
            ],
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "An external Code for the DeliveryMethod. This should not be set if the Code defined in Norce is to be used.",
            "nullable": true
          },
          "Carrier": {
            "type": "string",
            "description": "The carrier providing the delivery method",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used when updating the Checkout with a DeliveryMethod. See UpdateDeliveryMethod4 for more info.\r\nOnly intended to be used in API version 1.1."
      },
      "BasketItem": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal id of the basket item. Used to refer to this particular row in different methods.",
            "format": "int32",
            "nullable": true
          },
          "LineNo": {
            "type": "integer",
            "description": "Line number of the item. Used to refer to this particular row in different methods.",
            "format": "int32",
            "nullable": true
          },
          "ParentLineNo": {
            "type": "integer",
            "description": "If this item is part of a bundle, an attached item from promotion or such this property will refer to the associated line number.",
            "format": "int32",
            "nullable": true
          },
          "ProductId": {
            "type": "integer",
            "description": "Internal product id of the product for this basket item.",
            "format": "int32",
            "nullable": true
          },
          "PartNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The PartNo of this Item. Must be specified when adding items to a basket. MaxLength: 50",
            "nullable": true
          },
          "ManufacturerPartNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Manufacturer part number. Populated by Norce. MaxLength: 50",
            "nullable": true
          },
          "Name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Name of the product. Populated by Norce. MaxLength: 255",
            "nullable": true
          },
          "SubHeader": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Sub header of the product. Populated by Norce. MaxLength: 255",
            "nullable": true
          },
          "ThumbnailImage": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "FlagIdSeed": {
            "type": "string",
            "description": "A comma separated list of internal flag ids.",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The internal type id of the underlying product. See ListSkuTypes under Products.",
            "format": "int32",
            "nullable": true
          },
          "PriceDisplay": {
            "type": "number",
            "description": "This is the price, excluding VAT, after applying company discounts and promotions. It is what the customer is paying.",
            "format": "decimal",
            "nullable": true
          },
          "Price": {
            "type": "number",
            "description": "This is the snapshot value, excluding VAT, of PriceDisplay when the basket is bought. Should be null. Can be used to set a price from the application when updating or creating BasketItems. Then IsPriceManual must be set to true as well.",
            "format": "decimal",
            "nullable": true
          },
          "PriceOriginal": {
            "type": "number",
            "description": "This is the original price of the SKU, excluding VAT.",
            "format": "decimal",
            "nullable": true
          },
          "Cost": {
            "type": "number",
            "description": "CostPurchase from Norce Admin, excluding VAT.",
            "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",
            "nullable": true
          },
          "Quantity": {
            "type": "number",
            "description": "The Quantity of this Item. Must be specified when adding items to a basket.",
            "format": "decimal",
            "nullable": true
          },
          "Uom": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "MaxLength: 50",
            "nullable": true
          },
          "UomCount": {
            "type": "number",
            "format": "decimal",
            "nullable": true
          },
          "Comment": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Free text comment for this basket item. MaxLength: 255",
            "nullable": true
          },
          "PriceListId": {
            "type": "integer",
            "description": "The internal pricelist id of this Item. Must be specified when adding items to a basket. Use the PriceListId from Product or ProductItem.",
            "format": "int32",
            "nullable": true
          },
          "ReferId": {
            "type": "integer",
            "description": "Used to tag a BasketItem with some external id.",
            "format": "int32",
            "nullable": true
          },
          "ReferUrl": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Used to tag a BasketItem with an incoming URL. MaxLength: 255",
            "nullable": true
          },
          "IsEditable": {
            "type": "boolean",
            "description": "Indicates if a basket item is editable or not. This can happen when the API splits rows in promotions. Can be checked to see if an item should be allowed for UpdateBasketItem.",
            "nullable": true
          },
          "IsDiscountable": {
            "type": "boolean",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtraInfo"
            },
            "description": "List of information types and values associated with this particular basket item.",
            "nullable": true
          },
          "OptionalItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BasketItem"
            },
            "description": "List of basket items. It is used in Basket.Items.",
            "nullable": true
          },
          "OnHandValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true,
            "deprecated": true
          },
          "IncomingValue": {
            "type": "number",
            "format": "decimal",
            "nullable": true,
            "deprecated": true
          },
          "NextDeliveryDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "deprecated": true
          },
          "LeadtimeDayCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "PromotionIdSeed": {
            "type": "string",
            "description": "Internal ids of promotions applied on this product.",
            "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": "uuid",
            "nullable": true
          },
          "ManufacturerName": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "Name of the manufacturer of the product. Populated by Norce. MaxLength: 100",
            "nullable": true
          },
          "CategoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "OnHand": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnHand"
              }
            ],
            "nullable": true
          },
          "OnHandSupplier": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnHand"
              }
            ],
            "nullable": true
          },
          "PriceRecommended": {
            "type": "number",
            "description": "The rule based price, excluding VAT, from a priceList, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "ManufacturerId": {
            "type": "integer",
            "description": "Internal manufacturer id for the product. Populated by Norce.",
            "format": "int32",
            "nullable": true
          },
          "UniqueName": {
            "maxLength": 500,
            "minLength": 0,
            "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",
            "nullable": true
          },
          "StatusId": {
            "type": "integer",
            "description": "The status of the underlying product. Lookup references in ListStatuses.",
            "format": "int32",
            "nullable": true
          },
          "StockDisplayBreakPoint": {
            "type": "integer",
            "description": "A value that can be used for display logic regarding OnHand.",
            "format": "int32",
            "nullable": true
          },
          "PriceCatalog": {
            "type": "number",
            "description": "The original price, excluding VAT, if specified.",
            "format": "decimal",
            "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.",
            "nullable": true
          },
          "SubDescription": {
            "type": "string",
            "description": "Sub description from Norce Admin.",
            "nullable": true
          },
          "CategoryIdSeed": {
            "type": "string",
            "description": "A comma separated list of internal category ids ordered so the primary category is first.",
            "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.",
            "nullable": true
          },
          "AppliedPromotions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppliedPromotionOnItem"
            },
            "description": "Applied promotions for this item, if any. It will contain some info about what promotion was applied and amount applied.",
            "nullable": true
          },
          "RequirementPromotionIdSeed": {
            "type": "string",
            "description": "A comma separated list of promotion internal ids for this item that are fulfilling the requirements.",
            "nullable": true
          },
          "IsSubscribable": {
            "type": "boolean",
            "description": "True if this item can be added to a Subscription. False otherwise. Can be used when copying BasketItems from one Basket to a TemplateBasket in a Subacription.",
            "nullable": true
          },
          "DescriptionHeader": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "DescriptionHeader for the product as specified in Norce Admin. MaxLength: 255",
            "nullable": true
          },
          "IsPriceManual": {
            "type": "boolean",
            "description": "Used when setting price on a BasketItem from the application. Manual prices are not discountable when applying promotions or company discounts.",
            "nullable": true
          },
          "PriceStandard": {
            "type": "number",
            "description": "The standard price, excluding VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "EanCode": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "SKU EAN code. MaxLength: 50",
            "nullable": true
          },
          "CostUnit": {
            "type": "number",
            "description": "CostUnit, excluding VAT, from Norce Admin.",
            "format": "decimal",
            "nullable": true
          },
          "PriceDisplayIncVat": {
            "type": "number",
            "description": "This is the price including VAT after applying company discounts and promotions. It is what the customer is paying.",
            "format": "decimal",
            "nullable": true
          },
          "PriceListLocked": {
            "type": "boolean",
            "description": "Set to true to exclude this item's price list from business logic when selecting cheapest price. Will be set to false if price list is unavailable.",
            "nullable": true
          },
          "PriceOriginalIncVat": {
            "type": "number",
            "description": "This is the original price of the SKU, including VAT.",
            "format": "decimal",
            "nullable": true
          },
          "PriceRecommendedIncVat": {
            "type": "number",
            "description": "The rule based price, including VAT, from a priceList, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "PriceCatalogIncVat": {
            "type": "number",
            "description": "The original price, including VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "PriceStandardIncVat": {
            "type": "number",
            "description": "The standard price, including VAT, if specified.",
            "format": "decimal",
            "nullable": true
          },
          "Weight": {
            "type": "number",
            "description": "The weight of a single item.",
            "format": "decimal",
            "nullable": true
          },
          "Height": {
            "type": "number",
            "description": "The height of a single item.",
            "format": "decimal",
            "nullable": true
          },
          "Width": {
            "type": "number",
            "description": "The width of a single item.",
            "format": "decimal",
            "nullable": true
          },
          "Length": {
            "type": "number",
            "description": "The length of a single item.",
            "format": "decimal",
            "nullable": true
          },
          "IsDropShipOnly": {
            "type": "boolean",
            "description": "Is item only sent through dropshipping.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BasketPagedList": {
        "type": "object",
        "properties": {
          "ItemCount": {
            "type": "integer",
            "description": "Total number of baskets.",
            "format": "int32",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Basket"
            },
            "description": "List of baskets.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Checkout": {
        "type": "object",
        "properties": {
          "Basket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Basket"
              }
            ],
            "nullable": true
          },
          "Buyer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "nullable": true
          },
          "Payer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "nullable": true
          },
          "ShipTo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Customer"
              }
            ],
            "nullable": true
          },
          "PaymentMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethod"
            },
            "description": "List of available payment methods for this checkout. May be changed depending on basket contents. Generated by Norce.",
            "nullable": true
          },
          "DeliveryMethods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DeliveryMethod"
            },
            "description": "List of available delivery methods for this checkout. May be changed depending on basket contents. Generated by Norce.",
            "nullable": true
          },
          "Payments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Payment"
            },
            "description": "List of payment attemtps made for this checkout. Each payment method selected will create it's own entry in this list.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used to connect a specific basket with customer information, payment and delivery options."
      },
      "Company": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Norce Id for the Company. When creating a new Company leave this blank as Norce will generate the Id.",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key of the Company.",
            "format": "uuid",
            "nullable": true
          },
          "Code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The external code. Usually the id in the erp system. MaxLength: 50",
            "nullable": true
          },
          "Name": {
            "maxLength": 100,
            "minLength": 0,
            "type": "string",
            "description": "The Name of the Company. MaxLength: 100",
            "nullable": true
          },
          "OrgNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The organizational number of the Company. Used to identify the Company for some payment methods. The combination of OrgNo and Name must be unique. MaxLength: 50",
            "nullable": true
          },
          "Phone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The Phone number of the Company. MaxLength: 50",
            "nullable": true
          },
          "ReferId": {
            "type": "integer",
            "description": "Used to tag a Company with some external id.",
            "format": "int32",
            "nullable": true
          },
          "ReferUrl": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Used to tag a Company with an incoming URL. MaxLength: 255",
            "nullable": true
          },
          "DeliveryAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Address"
            },
            "description": "A list of delivery Addresses for the Company. When needed the first address in the list will be used. So it is vital in the checkout process to either sort them or just supply one delivery address. Company addresses will override Customer addresses if both exists in the Checkout process.",
            "nullable": true
          },
          "InvoiceAddress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "UseInvoiceAddressAsDeliveryAddress": {
            "type": "boolean",
            "description": "Can be used when updating or inserting addresses on Company. If set to true the invoice address will be used as a delivery address as well. Then just an invoice address needs to be passed in. The deliveryAddress will be ignored. If set to false both invoice address and delivery address must be specified.",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "Contains a list of id-value pairs specific to the client for this company. Use ApplicationService.ListCompanyInfoTypes for id lookup.",
            "nullable": true
          },
          "PricelistIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Contains a list of priceList ids valid for this company. It will be empty if no priceLists exist. It can be used to check products lists if they are from a company specific priceList. No need to pass this into List-methods since they are considered any way in the methods. This property should be considered as ReadOnly as priceLists are maintained else where.",
            "nullable": true
          },
          "ParentId": {
            "type": "integer",
            "description": "Points to an optional parent company. Used when companies are connected some how.",
            "format": "int32",
            "nullable": true
          },
          "DeliveryMethodIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Contains a list of delivery method ids valid for this company. It will be empty if no delivery methods exist.",
            "nullable": true
          },
          "PaymentMethodIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Contains a list of payment method ids valid for this company. It will be empty if no payment methods exist.",
            "nullable": true
          },
          "Email": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The Email address of the Company. MaxLength: 255",
            "nullable": true
          },
          "Flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Flag"
            },
            "description": "A list of Flags of the Company. See Flag for information about flags. Flags can be used in Promotions or otherwise to provide custom handling of specific Companies.",
            "nullable": true
          },
          "VatNo": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "This is the VAT registration number for the company. MaxLength: 50",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about a Company."
      },
      "Customer": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Norce Id of the Customer. When creating a new Customer leave this blank as Norce will generate the Id.",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The system wide unique Key of the Customer.",
            "format": "uuid",
            "nullable": true
          },
          "Code": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The external code. Usually the id in the erp system. MaxLength: 50",
            "nullable": true
          },
          "Email": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The Email address of the Customer. MaxLength: 255",
            "nullable": true
          },
          "Ssn": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The social security number of the Customer. Used to identify the Customer for some payment methods. MaxLength: 50",
            "nullable": true
          },
          "FirstName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The FirstName of the Customer. MaxLength: 50",
            "nullable": true
          },
          "LastName": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The LastName of the Customer. MaxLength: 50",
            "nullable": true
          },
          "Phone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The PhoneNumber of the Customer. MaxLength: 50",
            "nullable": true
          },
          "CellPhone": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The CellPhone number of the Customer. MaxLength: 50",
            "nullable": true
          },
          "ReferId": {
            "type": "integer",
            "description": "Used to tag a Customer with some external id.",
            "format": "int32",
            "nullable": true
          },
          "ReferUrl": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "Used to tag a Customer with an incoming URL. MaxLength: 255",
            "nullable": true
          },
          "Account": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Account"
              }
            ],
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Company"
            },
            "description": "A list of Companies. A Customer can have many Companies. The first will be used as default. In the Checkout process just pass in one Company if any is to be used or the first will be used as default.",
            "nullable": true
          },
          "DeliveryAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Address"
            },
            "description": "A list of delivery Addresses for the Customer. When needed the first address in the list will be used. So it is vital in the checkout process to either sort them or just supply one delivery address. Company addresses will override Customer addresses if both exists in the Checkout process.",
            "nullable": true
          },
          "InvoiceAddress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "Flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Flag"
            },
            "description": "A list of Flags for the Customer. See Flag for information about flags. Flags can be used in Promotions or otherwise to provide custom handling of specific Customers.",
            "nullable": true
          },
          "UseInvoiceAddressAsDeliveryAddress": {
            "type": "boolean",
            "description": "Can be use when updating or inserting addresses on Customer. If set to true the invoice address will be used as a delivery address as well. Then just an invoice address needs to be passed in. The deliveryAddress will be ignored. If set to false both invoice address and delivery address must be specified.",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "Contains a list of id-value pairs specific to the client for this customer. Use ApplicationService.ListCustomerInfoTypes for id lookup.",
            "nullable": true
          },
          "PricelistIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Contains a list of priceList ids valid for this customer. It will be empty if no priceLists exist. It can be used to check products lists if they are from a customer specific priceList. No need to pass this into List-methods since they are considered any way in the methods. This property should be considered as ReadOnly as priceLists are maintained else where.",
            "nullable": true
          },
          "CrmId": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Used to save the Customers external id from a crm-system. MaxLength: 50",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "Specifies if the Customer is active or not.",
            "nullable": true
          },
          "Created": {
            "type": "string",
            "description": "When the customer was created.",
            "format": "date-time",
            "nullable": true
          },
          "Updated": {
            "type": "string",
            "description": "When the customer was last updated.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about a Customer."
      },
      "DayOfWeek": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Sunday",
          "Monday",
          "Tuesday",
          "Wednesday",
          "Thursday",
          "Friday",
          "Saturday"
        ]
      },
      "DeliveryData": {
        "type": "object",
        "additionalProperties": false
      },
      "DeliveryMethod": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the DeliveryMethod.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the DeliveryMethod.",
            "nullable": true
          },
          "TypeId": {
            "type": "integer",
            "description": "The internal type id of the DeliveryMethod. DeliveryMethodTypes are logical groupings of different types such as home delivery, pickup and such.",
            "format": "int32",
            "nullable": true
          },
          "TypeName": {
            "type": "string",
            "description": "The TypeName of the DeliveryMethodType.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The Description of the DeliveryMethod.",
            "nullable": true
          },
          "PartNo": {
            "type": "string",
            "description": "The part number, if any, of the product representing the DeliveryMethod. Products setup for delivery methods must have a SkuType equal to Freight. These are handled by Norce and added and removed automatically.",
            "nullable": true
          },
          "Price": {
            "type": "number",
            "description": "The Price of the DeliveryMethod, excluding VAT.",
            "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",
            "nullable": true
          },
          "IsNotifiable": {
            "type": "boolean",
            "description": "Indicates if the DeliveryMethod has delivery notifications.",
            "nullable": true
          },
          "ImagePath": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "IsSelected": {
            "type": "boolean",
            "description": "IsSelected is set to true for the currently selected DeliveryMethod on baskets. All other DeliveryMethods have this set to false. If no DeliveryMethod has been set all will have this value set to false.",
            "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": "uuid",
            "nullable": true
          },
          "IsForCompanyOnly": {
            "type": "boolean",
            "description": "Indicates if the DeliveryMethod has is for Companies only.",
            "nullable": true
          },
          "IsForPersonOnly": {
            "type": "boolean",
            "description": "Indicates if the DeliveryMethod has is for Customers only.",
            "nullable": true
          },
          "Cost": {
            "type": "number",
            "description": "The Cost of the DeliveryMethod.",
            "format": "decimal",
            "nullable": true
          },
          "StoreId": {
            "type": "integer",
            "description": "The internal store id of any Store connected to this DeliveryMethod. Most often this will be set if ZipCode mappings exist in Norce.",
            "format": "int32",
            "nullable": true
          },
          "WarehouseId": {
            "type": "integer",
            "description": "The internal warehouse id of any Warehouse connected to this DeliveryMethod. Most often this will be set if ZipCode mappings exist in Norce.",
            "format": "int32",
            "nullable": true
          },
          "LocationId": {
            "type": "integer",
            "description": "The internal location id of any WarehouseLocation connected to this DeliveryMethod. Most often this will be set if ZipCode mappings exist in Norce.",
            "format": "int32",
            "nullable": true
          },
          "DropPoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DropPoint"
            },
            "description": "A list of DropPoint, if any, for the DeliveryMethod. These are not kept in Norce but fetched from integrated DeliveryMethod providers such as ShipAdvisor.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "An external Code for the DeliveryMethod.",
            "nullable": true
          },
          "Carrier": {
            "type": "string",
            "description": "Optional information about carrier",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represent a DeliveryMethod in Norce. DeliveryMethods can be specified in Norce Admin or fetch from integrated Delivery providers such as ShipAdvisor. Application specific."
      },
      "DropPoint": {
        "type": "object",
        "properties": {
          "Code": {
            "type": "string",
            "description": "Code is the external/integrated DeliveryMethod provider's code for the pickup store.",
            "nullable": true
          },
          "RoutingCode": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "Depot": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "Name1": {
            "type": "string",
            "description": "The name of the place to pickup the goods.",
            "nullable": true
          },
          "Name2": {
            "type": "string",
            "description": "The name part 2 of the place to pickup the goods.",
            "nullable": true
          },
          "Address1": {
            "type": "string",
            "description": "The Address of the place to pickup the goods.",
            "nullable": true
          },
          "Address2": {
            "type": "string",
            "description": "The Address part 2 of the place to pickup the goods.",
            "nullable": true
          },
          "PostalCode": {
            "type": "string",
            "description": "The ZipCode of the place to pickup the goods.",
            "nullable": true
          },
          "City": {
            "type": "string",
            "description": "The City of the place to pickup the goods.",
            "nullable": true
          },
          "CountryCode": {
            "type": "string",
            "description": "The CountryCode of the place to pickup the goods.",
            "nullable": true
          },
          "Contact": {
            "type": "string",
            "description": "The Contact of the place to pickup the goods.",
            "nullable": true
          },
          "Phone": {
            "type": "string",
            "description": "The Phone to the place to pickup the goods.",
            "nullable": true
          },
          "Fax": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "Email": {
            "type": "string",
            "description": "The Email to the place to pickup the goods.",
            "nullable": true
          },
          "Latitude": {
            "type": "number",
            "description": "The Latitude part of the location of the pickup. Can be used to calculate distances.",
            "format": "double",
            "nullable": true
          },
          "Longitude": {
            "type": "number",
            "description": "The Longitude part of the location of the pickup. Can be used to calculate distances.",
            "format": "double",
            "nullable": true
          },
          "Distance": {
            "type": "number",
            "description": "The Distance to the location of the pickup.",
            "format": "double",
            "nullable": true
          },
          "OpeningHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpeningHours"
            },
            "description": "A list of opening hours for the pickup.",
            "nullable": true
          },
          "IsSelected": {
            "type": "boolean",
            "description": "Indicates if this is the selected DropPoint or not. Gets set by Norce.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The DropPoint entity represents a pickup place for deliveries. Only used for external or integrated DeliveryMethod providers."
      },
      "ErrorMessage_v1_1": {
        "type": "object",
        "properties": {
          "MessageId": {
            "type": "integer",
            "description": "Unique identifier for the message.",
            "format": "int32",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "The error message.",
            "nullable": true
          },
          "Orchestration": {
            "type": "string",
            "description": "Orchestration",
            "nullable": true
          },
          "TimeStamp": {
            "type": "string",
            "description": "The time the error occurred.",
            "format": "date-time",
            "nullable": true
          },
          "Record": {
            "type": "string",
            "description": "An xml representation of Messages.",
            "nullable": true
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringStringKeyValuePair"
            },
            "description": "A dictionary of additional messages or data related to the error.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Error message for version 1.1"
      },
      "ExtraInfo": {
        "type": "object",
        "properties": {
          "TypeId": {
            "type": "integer",
            "description": "The internal id of type. This TypeId might be different in different tiers such as Stage and Production. Use Code if hard coding is required.",
            "format": "int32",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The Value of the Entity.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the type, if existing. Use this value when hard coding is required.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information carrying entity to convey customer specific information from the basket to the order, PSP et.al."
      },
      "File": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the File.",
            "format": "int32",
            "nullable": true
          },
          "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",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the File.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The Description of the File.",
            "nullable": true
          },
          "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": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Flag": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Flag.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Flag.",
            "nullable": true
          },
          "Group": {
            "type": "integer",
            "description": "The GroupId of the Flag.",
            "format": "int32",
            "nullable": true
          },
          "IsSelected": {
            "type": "boolean",
            "description": "Indicates if the Flag is selected or not.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about a flag set on Customer or Company. See CustomerFlags for information about available flags."
      },
      "IdNameDescription": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal Id of the Entity.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The Name of the Entity.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The Description of the Entity.",
            "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": "uuid",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the Entity.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The Value of the Entity.",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "The Code of the Entity, if existing. Use this value when hard coding is required.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An Entity used where Id and Value is needed. Mostly used for lookup data."
      },
      "InsertItemsPostPurchaseData": {
        "type": "object",
        "properties": {
          "ItemsToAdd": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BasketItem"
            },
            "description": "The items to add to the purchase. The items to insert must have its PartNo, Quantity and PriceListId set. ParentLineNo, Name, Comment, ReferId and ReferUrl can be used if other values than the default are wanted. All other properties will be populated from the system.",
            "nullable": true
          },
          "PaymentParameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NameValue"
            },
            "description": "Roundtrip of the parameters received in the original payment response.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used as input to InsertItemsPostPurchase since WCF cannot take more than one complex type at once as parameter."
      },
      "NameValue": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The Name of the Entity.",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The Value of the Entity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An Entity used where Name and Value is needed. Mostly used for lookup data."
      },
      "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",
            "nullable": true
          },
          "IncomingValue": {
            "type": "number",
            "description": "The incoming quantity on the next delivery.",
            "format": "decimal",
            "nullable": true
          },
          "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.",
            "nullable": true
          },
          "IsReturnable": {
            "type": "boolean",
            "description": "Indicate if the product is returnable in a store.",
            "nullable": true
          },
          "Info": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "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.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about OnHand for a given SKU. There are generally three different types of OnHand in Norce. One for the Web, one for the chosen supplier and one for any specified Store."
      },
      "OpeningHours": {
        "type": "object",
        "properties": {
          "Day": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DayOfWeek"
              }
            ],
            "nullable": true
          },
          "Open": {
            "type": "string",
            "nullable": true
          },
          "Close": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Payment": {
        "type": "object",
        "properties": {
          "PaymentCode": {
            "type": "integer",
            "description": "System generated id for this particular payment. Client specific.",
            "format": "int32",
            "nullable": true
          },
          "Amount": {
            "type": "number",
            "description": "Payment amount, including VAT.",
            "format": "decimal",
            "nullable": true
          },
          "CardNo": {
            "type": "string",
            "description": "Card number if payment has been made by credit card or gift card. Populated by PSP.",
            "nullable": true
          },
          "PaymentMethodId": {
            "type": "integer",
            "description": "Internal id of the payment method for this payment. Application specific.",
            "format": "int32",
            "nullable": true
          },
          "PaymentServiceId": {
            "type": "integer",
            "description": "Internal id of the payment service for this payment. System specific. Indicates the PSP.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single payment attempt for this basket."
      },
      "PaymentMethod": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal id for this payment method.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "Descriptive name of the payment method.",
            "nullable": true
          },
          "TypeId": {
            "type": "integer",
            "description": "Internal type id for this payment method.",
            "format": "int32",
            "nullable": true
          },
          "TypeName": {
            "type": "string",
            "description": "Clear text name of the type of this payment method.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Free text description of the payment method.",
            "nullable": true
          },
          "PartNo": {
            "type": "string",
            "description": "Part number for this payment method, if configured.",
            "nullable": true
          },
          "Price": {
            "type": "number",
            "description": "Price, excluding VAT, to use this payment method, if configured.",
            "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",
            "nullable": true
          },
          "ImagePath": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "IsSelected": {
            "type": "boolean",
            "description": "Indicates if this is the currently selected payment method for the Checkout. Only one may have this flag set to true. Use UpdatePaymentMethod3 to set this property.",
            "nullable": true
          },
          "Service": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentService"
              }
            ],
            "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": "uuid",
            "nullable": true
          },
          "IsForCompanyOnly": {
            "type": "boolean",
            "description": "Indicates if this payment method is only allowed for companies. Cannot be combined with IsForPersonOnly.",
            "nullable": true
          },
          "IsForPersonOnly": {
            "type": "boolean",
            "description": "Indicates if this payment method is only allowed for persons. Cannot be combined with IsForCompanyOnly.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a specific payment method in Norce. A PSP may be represented with multiple payment methods. Application specific."
      },
      "PaymentResponse": {
        "type": "object",
        "properties": {
          "Status": {
            "type": "string",
            "description": "String response. OK if successful, otherwise may have different values depending on PSP.",
            "nullable": true
          },
          "StatusDescription": {
            "type": "string",
            "description": "Descriptive text for the status.",
            "nullable": true
          },
          "BasketId": {
            "type": "integer",
            "description": "Internal id of the associated basket.",
            "format": "int32",
            "nullable": true
          },
          "OrderNo": {
            "type": "string",
            "description": "Order number if order's been created.",
            "nullable": true
          },
          "PaymentCode": {
            "type": "string",
            "description": "Internal identifier of this specific payment attempt.",
            "nullable": true
          },
          "PaymentReference": {
            "type": "string",
            "description": "External identifier of this specific payment attempt, usually from the PSP.",
            "nullable": true
          },
          "HostedPaymentPage": {
            "type": "string",
            "description": "Used when a payment should be finalized on a different platform, e.g. sending a link by SMS to customer.",
            "nullable": true
          },
          "RedirectUrl": {
            "type": "string",
            "description": "Configurated redirection URL after successful payment.",
            "nullable": true
          },
          "RedirectParameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NameValue"
            },
            "description": "PSP specific data returned for the payment. See PSP documentation.",
            "nullable": true
          },
          "IsSyncronous": {
            "type": "boolean",
            "description": "Indicates if the payment attempt was synchronous or not.",
            "nullable": true
          },
          "PaymentServiceId": {
            "type": "integer",
            "description": "Internal id of the payment service used.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response from payment service calls such as GetPaymentForm, Purchase, PurchaseEx."
      },
      "PaymentService": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal id of this payment service.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "Descriptive name of this payment service.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "ImagePath": {
            "type": "string",
            "nullable": true,
            "deprecated": 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": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a way of payment. A client may have several payment methods using the same service. A PSP may offer several payment services."
      },
      "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",
            "nullable": true
          },
          "Warehouses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warehouse"
            },
            "description": "A list of warehouses with OnHand for the product.",
            "nullable": true
          },
          "Variants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductOnHand"
            },
            "description": "An optional list of ProductOnHand for all variants if fetched by productId. Null when fetched for a variant or a basket.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An entity that represents the OnHand for a product/variant."
      },
      "Promotion": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "The internal id of the Promotion.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The Name of the Promotion. MaxLength: 255",
            "nullable": true
          },
          "Header": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "SubHeader from Norce. MaxLength: 255",
            "nullable": true
          },
          "ShortDescription": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "DescriptionHeader from Norce. MaxLength: 255",
            "nullable": true
          },
          "Description1": {
            "type": "string",
            "description": "Description from Norce.",
            "nullable": true
          },
          "Description2": {
            "type": "string",
            "description": "SubDescription from Norce.",
            "nullable": true
          },
          "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": "uuid",
            "nullable": true
          },
          "RequirementSeed": {
            "type": "string",
            "description": "A comma separated list of fulfilled requirements for this promotion.",
            "nullable": true
          },
          "DiscountCode": {
            "type": "string",
            "description": "Will contain the discountCode if the promotion has a discountCode requirement.",
            "nullable": true
          },
          "IsExcludedFromPriceCalculation": {
            "type": "boolean",
            "description": "A value of true means the promotion was applied last an not included in any price calculations.",
            "nullable": true
          },
          "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.",
            "nullable": true
          },
          "Images": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/File"
            },
            "description": "A list of additional images files uploaded for the promotion. Images can be differentiated by using different types. See ListPromotionImageTypes for available types.",
            "nullable": true
          },
          "ProductFilters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromotionProductFilter"
            },
            "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.",
            "nullable": true
          },
          "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.",
            "nullable": true
          },
          "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.",
            "nullable": true
          },
          "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",
            "nullable": true
          },
          "ExternalCode": {
            "maxLength": 255,
            "minLength": 0,
            "type": "string",
            "description": "The external code of the Promotion. This is NOT the discount code. MaxLength: 255",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Promotion entity represents a promotion in Norce. It contains some meta data from the Promotion as well as applied total amount when applicable."
      },
      "PromotionProductFilter": {
        "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.",
            "nullable": true
          },
          "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.",
            "nullable": true
          },
          "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
          }
        },
        "additionalProperties": false,
        "description": "PromotionProductFilter shows what any product in the requirement or effect is filtered by. Values should be AND:ed if used to filter products."
      },
      "PurchaseEx2Data": {
        "type": "object",
        "properties": {
          "Checkout": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Checkout"
              }
            ],
            "nullable": true
          },
          "PaymentParameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NameValue"
            },
            "description": "General: 'test'=true to enable tests. When 'test' is used no payments will be processed for real. Payments may interpret supplied values such as cardNumber or ssn to simulate failures. Not implemented. Klarna: 'sessionId'=id. Used to provide a sessionId to Klarna payments. Not implemented. Payex and Dibs. Supported values are 'returnUrl' and 'cancelUrl'. Values should point to where the payment service should go in case of success/failure.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Used as input to PurchaseEx2 since WCF cannot take more than one complex type at once as parameter."
      },
      "SavedBasket": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "Internal id of the saved basket.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "Name given to this specific saved basket.",
            "nullable": true
          },
          "Created": {
            "type": "string",
            "description": "Creation date.",
            "format": "date-time",
            "nullable": true
          },
          "CustomerId": {
            "type": "integer",
            "description": "Internal customer id of associated customer, if any.",
            "format": "int32",
            "nullable": true
          },
          "ValidTo": {
            "type": "string",
            "description": "Valid date, if any.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StringStringKeyValuePair": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Subscription": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "A unique internal id for this Subscription. When creating new Subscription this should be left as null and will be ignored.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The name of the Subscription. This will also be the name of the template basket. Can be used to distinguish Subscriptions from each other.",
            "nullable": true
          },
          "TemplateBasket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Basket"
              }
            ],
            "nullable": true
          },
          "Type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SubscriptionType"
              }
            ],
            "nullable": true
          },
          "StatusId": {
            "type": "integer",
            "description": "The internal status id for this Subscription. When a Subscription is created the status will be 0 (Inactive) and ignored. To activate a Subscription it must pass through the Checkout process. See ListSubscriptionStatus for valid values. Can only be changed between Active and Paused. To delete a Subscription use DeleteSubscription.",
            "format": "int32",
            "nullable": true
          },
          "HoldUntilDate": {
            "type": "string",
            "description": "A date used to temporarily pause the Subscription and automatically activate it again on the specified date. If no HoldFromDate is specified the pause will start immediately.",
            "format": "date-time",
            "nullable": true
          },
          "StartDate": {
            "type": "string",
            "description": "An optional start date for the Subscription. The Subscription can be activated but no orders will be processed before this date if specified. Can only be changed if a specified date has not passed or if the Subscription is still inactive. If no StartDate is specified when activating the Subscription this will be set to the activation date.",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "An optional end date for the Subscription. The Subscription will be deleted after this date if specified. See DeleteSubscription for details about deleting subscriptions.",
            "format": "date-time",
            "nullable": true
          },
          "Schedules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionSchedule"
            },
            "description": "The schedules for this Subscription. Any Subscription must have at least one schedule when activated.",
            "nullable": true
          },
          "HoldFromDate": {
            "type": "string",
            "description": "A date used to temporarily pause the Subscription from the specified date and automatically activate it again on HoldUtilDate. If this is specified HoldUntilDate must also be specified.",
            "format": "date-time",
            "nullable": true
          },
          "NextRun": {
            "type": "string",
            "description": "Calculated date for next time an order will be created by this subscription",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A Subscription is created by a user. A subscription is backed by a quotation acting as a template for creating orders at scheduled intervals."
      },
      "SubscriptionSchedule": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "A unique internal id for this SubscriptionSchedule. When creating new schedules this should be left as null.",
            "format": "int32",
            "nullable": true
          },
          "IsActive": {
            "type": "boolean",
            "description": "Specifies if the schedule is active or not. Only active schedules are considered when creating orders.",
            "nullable": true
          },
          "Frequency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdValue"
              }
            ],
            "nullable": true
          },
          "RecurValue": {
            "type": "integer",
            "description": "Specifies how often the Frequency should be applied. If Frequency is 'Daily' and RecurValue is 2 then the schedule is every second day.",
            "format": "int32",
            "nullable": true
          },
          "IsOnMonday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Monday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "IsOnTuesday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Tuesday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "IsOnWednesday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Wednesday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "IsOnThursday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Thursday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "IsOnFriday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Friday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "IsOnSaturday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Saturday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "IsOnSunday": {
            "type": "boolean",
            "description": "Specifies if the schedule should be applied on a Sunday. Only used when Frequency is 'Weekly'. At least one of the IsOnDay values must be specified.",
            "nullable": true
          },
          "MonthlyDay": {
            "type": "integer",
            "description": "Specifies if the schedule should be applied on a specific day. Only used when Frequency is 'Monthly' and not any of the MonthlyInterval values are used.",
            "format": "int32",
            "nullable": true
          },
          "MonthlyInterval": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdValue"
              }
            ],
            "nullable": true
          },
          "MonthlyIntervalValue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IdValue"
              }
            ],
            "nullable": true
          },
          "TimeOfDay": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TimeSpan"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A specific schedule for a Subscription. Schedules are used to determine when orders should be created from the template basket. The StartDate of the Subscription is used as start for the Schedule."
      },
      "SubscriptionScheduleData": {
        "type": "object",
        "properties": {
          "Frequencies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "A list of frequencies. Defines how often should a Subscription should produce an order. See SubscriptionSchedule for usage.",
            "nullable": true
          },
          "MonthlyIntervals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "A list of intervals used together with MonthlyIntervalValues. See SubscriptionSchedule for usage.",
            "nullable": true
          },
          "MonthlyIntervalValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IdValue"
            },
            "description": "A list of interval values used together with MonthlyIntervals. See SubscriptionSchedule for usage.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "General data for scheduling Subscriptions. Data can be used to populate drop lists with values needed when creating SubscriptionSchedules."
      },
      "SubscriptionType": {
        "type": "object",
        "properties": {
          "Id": {
            "type": "integer",
            "description": "A internal id for this type.",
            "format": "int32",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "description": "An external code use to identify this type. Used when creating Subscription.",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The name of the type.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the type.",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "An optional end date for the SubscriptionType. Subscriptions created for this SubscriptionType can not have an end date later than this.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A SubscriptionType specified for the application. Used by Subscription. SubscriptionTypes are created in Norce Admin."
      },
      "Summary": {
        "type": "object",
        "properties": {
          "Items": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SummaryItem"
              }
            ],
            "nullable": true
          },
          "Freigt": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SummaryItem"
              }
            ],
            "nullable": true
          },
          "Fees": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SummaryItem"
              }
            ],
            "nullable": true
          },
          "Total": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SummaryItem"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The Summary is a grouping of BasketItem totals. This can be used to display summaries for a Basket."
      },
      "SummaryItem": {
        "type": "object",
        "properties": {
          "Amount": {
            "type": "number",
            "description": "Total Amount exclusive VAT. PriceDisplay * Quantity.",
            "format": "decimal",
            "nullable": true
          },
          "Vat": {
            "type": "number",
            "description": "The total VAT amount.",
            "format": "decimal",
            "nullable": true
          },
          "AmountIncVat": {
            "type": "number",
            "description": "Total Amount including VAT. PriceDisplayIncVat * Quantity.",
            "format": "decimal",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The SummaryItem is the summary used for each item in Summary."
      },
      "TimeSpan": {
        "type": "object",
        "properties": {
          "Ticks": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "Days": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Hours": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Milliseconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Microseconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Nanoseconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Minutes": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Seconds": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "TotalDays": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "TotalHours": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "TotalMilliseconds": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "TotalMicroseconds": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "TotalNanoseconds": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "TotalMinutes": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "TotalSeconds": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "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": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnHand"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Warehouse. Used to get detailed OnHand for a product/variant or basket."
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
        "name": "Authorization",
        "in": "header"
      },
      "ApplicationId": {
        "type": "apiKey",
        "description": "ApplicationId header required for all requests.",
        "name": "ApplicationId",
        "in": "header"
      }
    }
  }
}