FORMAT: 1A HOST: https://menufactory-live-eu.qnips.com # qnips MenuImport API This document describes the qnips MenuImport API and essential resources provided by qnips. The API provides programmatic access to read and write all necessary qnips menu card data. The API allows you to automize the process of creating and/or updating the qnips menu card week objects and all other relavant data. # Glossary A brief list of terms used in the qnips MenuImport API context. - **API:** An http Application Programming Interface. - **JSON:** JavaScript Object Notation is a data format commonly used for API requests in parameters and response bodies. - **XML:** Extensible Markup Language. # Menu Import ## About qnips Menu Import allows you to automize the process of creating and/or updating the qnips menu card week objects and all other relavant data. Only a few steps are required to successfully sync your menu data with the qnips menu data. This can be achieved by sending certain API requests to the qnips MenuImport API. ## Summarized What happens when I start a menu import? - qnips will try to create or update week objects of an existing qnips menu card. - qnips will try to create or update menu categories of an existing qnips menu card. - qnips will try to create or update sortiment items of an existing qnips sortiment. - qnips will try to create or update price tags of an existing qnips brand. - qnips will try to create or update additives of an existing qnips brand. - qnips will try to create or update custom tags of an existing qnips brand. Terms like "catgories", "price tags" and "custom tags" will be explained later on in this document. ## Import Process ### Step 1. Retrieving brands > **Brand:** A company or organisation registered with qnips. **Preconditions:** - You need valid login credentials of a qnips Dashboard user. From now on, this user will be referred as [qnips user](#refQnipsUser). > **qnips user:** A registered qnips Dashboard user. > The user's qnips Dashboard login credentials will be used for authentication of the API requests. All registered qnips users are authorized to retrieve their related brands. A qnips user can be related to 0, 1 or multiple brands. This depends on the access rights settings in the qnips Dashboard. A list of Brands can be retrieved by the qnips MenuImport API. This list contains 0, 1 or multiple brand objects. A brand object contains the following properties: Name | Type | Description ---|---|--- **Id**|*Long*|Reference Id of the brand, defined by qnips **Name**|*String*|The name of the brand ### Step 2. Retrieving more detailed information of a specific brand After retrieving a list of brand objects in [Step 1](#refStep1), you can use one of the brand `Ids` to retrieve more detailed information about a specific brand. This information is essential in order to start the actual menu import. **Preconditions:** 1. You need valid login credentials as a qnips user. 2. The brand `Id` should be valid and available in the response of [Step 1](#refStep1). 3. The qnips user in question needs access rights to the brand with the specified `Id`. The BrandInfo response object contains the following properties: Name | Type | Description ---|---|--- **MenuCards**|*Array*|Array of [`MenuCard`](#refMenuCardModel) objects (metadata) **Sortiments**|*Array*|Array of [`Sortiment`](#refSortimentModel) objects (metadata) ### `MenuCard` (object) Name | Type | Description ---|---|--- **Id**|*Long*|Reference Id of the menu card, defined by qnips **Name**|*String*|The Name of the menu card ### `Sortiment` (object) Name | Type | Description ---|---|--- **Id**|*Long*|Reference Id of the sortiment, defined by qnips **Name**|*String*|The Name of the sortiment **StoreThirdPartyId**|*String, optional*|Unique identifier specified in the qnips Dashboard by the external party. **ThirdPartyId**|*String, optional*|Unique identifier specified in the qnips Dashboard by the external party. ### Step 3. Sync your Menu Data with qnips The third and last step will be the actual menu import. This menu import will sync your menu data with the menu data of qnips. **Preconditions:** 1. You need valid login credentials of a [qnips User](#refQnipsUser). 2. The [qnips User](#refQnipsUser) in question needs access rights to the brand with the specified `Id`. 3. The [qnips User](#refQnipsUser) in question needs edit rights ("Speiseplan bearbeiten") for the menu in the qnips Dashboard. 3. The brand `Id` should be valid and available in the response of [Step 1](#refStep1). 4. The sortiment `Id` should be valid and available in the response of [Step 2](#refStep2). 5. The menu card `Id` should be valid and available in the response of [Step 2](#refStep2). > **Note:** Sortiments, menu cards and qnips users are managed in the qnips Dashboard. You have the option to sync your menu data with qnips by either sending your data in a JSON or XML format to the qnips MenuImport API. The structure of the JSON or XML data is predefined by qnips. This structure might change in the future. We will do our best to not affect the existing data structure when changes are made. > **Note:** > - Data needs to be UTF-8 encoded. > - Property names are case-sensitive. > - All properties are required, unless stated otherwise. > - **The dashboard settings determine which data is to be overwritten** . #### Menu import data structure Name | Type | Description ---|---|--- **MenuImportData**|*Object*|The root element. ### `MenuImportData` (object) Name | Type | Description ---|---|--- **SortimentGroups**|*Array*|Array of [`SortimentGroup`](#refSortimentGroup) objects **PriceTags**|*Array, optional*|Array of [`PriceTag`](#refPriceTag) objects **Additives**|*Array, optional*|Array of [`Additive`](#refAdditive) objects **CustomTags**|*Array, optional*|Array of [`CustomTag`](#refCustomTag) objects **Vats**|*Array, optional*|Array of [`Vat`](#refVat) objects **RevenueAccounts**|*Array, optional*|Array of [`RevenueAccount`](#refRevenueAccount) objects **LabelGroups**|*Array, optional*|Array of [`LabelGroup`](#refLabelGroup) objects **Labels**|*Array, optional*|Array of [`Label`](#refLabel) objects **RatingLabels**|*Array, optional*|Array of [`RatingLabel`](#refRatingLabel) objects **ComponentGroups**|*Array, optional*|Array of [`ComponentGroup`](#refComponentGroup) objects **Items**|*Array, optional*|Array of [`Item`](#refItem) objects **Weeks**|*Array*|Array of [`Week`](#refWeek) objects. One or more weeks can be imported at the same time for the same menu card ### `SortimentGroup` (object) Name | Type | Description ---|---|--- **PLU**|*String, max length 50*|Unique identifier of the sortiment group specified by external party. An [`Item`](#refItem) will use this PLU as its `SortimentGroupPLU` property **Name**|*String*|Name of the sortiment group **RevenueAccountId**|*String, optional*|Unique identifier of the [`RevenueAccount`](#refRevenueAccount). **You have to make sure that a RevenueAccount with the `Id` exists in the [RevenueAccounts array](#refMenuImportData)** **VatIds**|*Array, optional*|Array of Strings with unique identifiers of the [`Vat`](#refVat). **You have to make sure that a Vat with the `Id` exists in the [Vats array](#refMenuImportData)** In the XML format this array contains `Id`-child-elements. ### `PriceTag` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map price tags with [`Item`](#refItem).[`Prices`](#refPrice).`PriceTagId`. This Id will also be used for future updates of an existing price tag **CurrencyIso**|*String*|e.g. "EUR" for Euro, "USD" for United States dollar or "GBP" for Pound sterling **InternalName**|*String*|The name of the item in the main language. This name is not visible to the outside world **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the price tag that will be displayed in menu cards. This name can be created in multiple languages **PublicLabel**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. This name can be created in multiple languages. **If a PublicLabel is specified, this price tag label will be displayed in the menu card instead of the PublicName** ### `Additive` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map additives with [`Item`](#refItem) `AdditiveIds`. This Id will also be used for future updates of an existing additive **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the additive that will be displayed in the menu card. This name can be created in multiple languages **PublicLabel**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. This name can be created in multiple languages. **If a PublicLabel is specified, this additive label will be displayed in the menu card instead of the PublicName** **IconUrl**|*String, optional*|URL of an image (online only). Local paths are not supported. An empty string ("") will be ignored and not update previous value. ### `CustomTag` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map custom tags with [`Item`](#refItem) `CustomTagIds`. This Id will also be used for future updates of an existing custom tag **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the custom tag that will be displayed in the menu card. This name can be created in multiple languages **PublicLabel**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. This name can be created in multiple languages. **If a PublicLabel is specified, this custom tag label will be displayed in the menu card instead of the PublicName** **IconUrl**|*String, optional*|URL of an image (online only). Local paths are not supported. An empty string ("") will be ignored and not update previous value. ### `RevenueAccount` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map a revenue account with [`Item`](#refItem).`RevenueAccountId`. This Id will also be used for future updates of an existing revenue account **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the revenue account that will be displayed in a report. This name can be created in multiple languages ### `Vat` (object) `Vat` is an object for specifying an applicable VAT-Rate to a product. Each product can reference multiple such Vats as they might apply in different contexts, i.e. In-House Meal, Take-Away-Order or even some proprietary VAT Application like for Students Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map vats with [`Item`](#refItem).`VatIds`. This Id will also be used for future updates of an existing vats **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the vat that will be displayed in a report. This name can be created in multiple languages **Rate**|*Decimal*|Rate of current vat in percents as decimal value **VatType**|*Enum*|Enum value of [`VatType`](#refVatType) ### `VatType` (Enum) Id | Name | Description ---|---|--- **0** | EatIn | - **1** | TakeAway | - **2** | Custom | Generic type for e.g. Student, Senior, etc. ### `LabelGroup` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map label groups with [`Item`](#refItem).`LabelGroups`. This Id will also be used for future updates of an existing label group **InternalName**|*String*|The name of the label group in the main language. This name is not visible to the outside world **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The text of the label group that will be displayed on the product. This name can be created in multiple languages ### `Label` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map labels with [`LabelGroups`](#refItemLabelGroup).`LabelIds`. This Id will also be used for future updates of an existing label **InternalName**|*String*|The name of the label in the main language. This name is not visible to the outside world **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The text of the label that will be displayed on the product. This text can be created in multiple languages ### `RatingLabel` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map ratingLabels with [`Ratings`](#refRating).`RatingLabelId`. This Id will also be used for future updates of an existing label **InternalName**|*String*|The name of the ratingLabel in the main language. This name is not visible to the outside world **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The text of the ratingLabel that will be displayed on the product. This text can be created in multiple languages **Description**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The description of the ratingLabel that can be displayed in the frontends. This description can be created in multiple languages **Type**|*Enum*|Enum value of [`RatingLabelType`](#refRatingLabelType) **IconUrl**|*String, optional*|URL of an image (online only). Local paths are not supported. An empty string ("") will be ignored and not update previous value. ### `RatingLabelType` (Enum) Id | Name | Description ---|---|--- **0** | Nutrition | Used for nutrition labeling (Nutri-Score) **1** | CO2 | Used for carbon emission labeling **2** | WaterFootprint | Used for water foootprint labeling **3** | HealthScore | Used for health score labeling **4** | AnimalTreatment | Used for animal welfare labeling **5** | Rainforest | Used for rain forest labeling ### `ComponentGroup` (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier specified by the external party. qnips will use this Id to map component group with [`Item`](#refItem).`ComponentGroups`. This Id will also be used for future updates of an existing component group **InternalName**|*String*|The name of the component group in the main language. This name is not visible to the outside world **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the [`ComponentGroup`](#refComponentGroup) that will be displayed in our apps. This name can be created in multiple languages **HasFixedComponents**|*Boolean*|Determines whether this group has always the same [`Component(s)`](#refComponent) across all products **IsOptional**|*Boolean*|Determines whether this group is mandatory in a preorder [`Component(s)`](#refComponent) **IsHidden**|*Boolean*|Determines whether this group is visible in the apps **MinGroupQuantity**|*Integer*|The minimum quantity of [`Component(s)`](#refComponent) that have to be ordered in this group. Used in preorder and only if `IsOptional` is true **MaxGroupQuantity**|*Integer*|The maximum quantity of [`Component(s)`](#refComponent) that have to be ordered in this group. Used in preorder and only if `IsOptional` is true **MaxComponentQuantity**|*Integer*|The maximum quantity of the same [`Component`](#refComponent) that can be ordered in this group. Used in preorder and only if `IsOptional` is true ### `Week` (object) Name | Type | Description ---|---|--- **Name**|*String, optional*|Name of the week. When no name is specified, qnips will create a default name with the following structure: "KW *{CalenderWeek}* ( *{MondayDate}*)". Example: "KW 1 (01.01.2020)" **MondayDate**|*String*|Unique monday date of the week. DateTime object formatted in "yyyy-MM-dd" **HeaderHtml**|*String, optional*|HTML to be displayed above the week in menu card templates **FooterHtml**|*String, optional*|HTML to be displayed below the week in menu card templates **ActiveDays**|*Array, optional*|Array of Integers. In the XML format this array contains `DayNumber`-child-elements. The definition of the Integer values can be found [below](#refActiveDays) **Categories**|*Array*|Array of [`Category`](#refCategory) objects > #### ActiveDays / DayNumbers Id | Day of Week ---|--- **0**|Monday **1**|Tuesday **2**|Wednesday **3**|Thursday **4**|Friday **5**|Saturday **6**|Sunday ### `Category` (object) Name | Type | Description ---|---|--- **InternalName**|*String*|Name of the menu category in the main language. When a PublicName and AppName are defined, this name will not be visible to the outside world. The menu importer identifies existing categories by this name **PublicName**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. The name of the menu category that will be displayed in the menu card. This name can be created in multiple languages. When no PublicName is specified, the InternalName will be used instead **AppName**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. The name of the menu category that will be displayed in the mobile qnips app menu cards. This name can be created in multiple languages. When no AppName is specified, the InternalName will be used instead **VisibleInApp**|*Boolean, optional*|Default value is true. If false, the menu category will **not** be delivered to any qnips app **PictureUrl**|*String, optional*| URL of an image (online only). Local paths are not supported **OrderIndex**|*Integer, optional*| OrderIndex of the category **Days**|*Array*|Array of [`Day`](#refDay) objects **ThirdPartyId**|*String*|Unique identifier specified by the external party ### `Translatable` (object) Name | Type | Description ---|---|--- **lang**|*String*|Language Culture Name, e.g. "de-DE", "en-US", "nl-NL" etc **val**|*String*|Text of the object in the specified language. Newlines are not allowed ### `Day` (object) Name | Type | Description ---|---|--- **Date**|*String*|DateTime object formatted in "yyyy-MM-dd" **Items**|*Array*|Array of [`Item`](#refItem) objects ### `Item` (object) Name | Type | Description ---|---|--- **PLU**|*String, max length 50*|Unique identifier specified by external party. The item will not be imported if the PLU is empty or missing. This Id will also be used for future updates of an existing item **SortimentGroupPLU**|*String*|Unique identifier of the sortiment group the item belongs to. The item will not be imported if the SortimentGroupPLU is empty or missing. **You have to make sure that a SortimentGroup with `SortimentGroupPLU` exists in the [SortimentGroups array](#refMenuImportData)** **InternalName**|*String*|The name of the item in the main language. This name is not visible to the outside world **PublicName**|*Array*|Array of [`Translatable`](#refTranslatable) objects. The name of the item that will be displayed in the menu card. This name can be created in multiple languages **AppName**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. The name of the item that will be displayed in qnips apps. This name can be created in multiple languages **Teaser**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. The teaser of the item that will be displayed in the menu card. This teaser can be created in multiple languages **Description**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. The description of the item that will be displayed in the menu card. This description can be created in multiple languages **PictureUrl**|*String, optional*|URL of an image (online only). Local paths are not supported **CoverUrls**|*Array, optional*|Array of strings, indicating the URL of an image (online only). Local paths are not supported. In the XML format this array contains `Url`-child-elements for each URL. **AllergenIds**|*Array, optional*|Array of Integers, indicating which allergens the item contains. In the XML format this array contains `Id`-child-elements for each Integer. The definition of the Integer values can be found [here](#refAllergenMappings) **AllergenTracesIds**|*Array, optional*|Array of Integers, indicating which traces of allergens the item contains. When the `Id` is already listed in `AllergenIds`, the AllergenTracesId will be ignored. In the XML format this array contains `Id`-child-elements for each Integer. The definition of the Integer values can be found [here](#refAllergenMappings) **AdditiveIds**|*Array, optional*|Array of Strings, indicating which additives the item contains. In the XML format this array contains `Id`-child-elements for each String. The definition of the String values can be found [here](#refAdditive). **You have to make sure that an Additive with the `Id` exists in the [Additives array](#refMenuImportData)** **CustomTagIds**|*Array, optional*|Array of Strings, indicating which custom tags the item contains. In the XML format this array contains `Id`-child-elements for each String. The definition of the String values can be found [here](#refCustomTags). **You have to make sure that a CustomTag with the `Id` exists in the [CustomTags array](#refMenuImportData)** **NutritionFacts**|*Object, optional*|Nutritional information of the item. See: [`NutritionFacts`](#refNutritionFacts) **ServingSize**|*Integer, optional*|The serving/portion size of the item in grams or milliliter. Without decimals **ServingSizeUnit**|*String, optional*|The unit of the ServingSize. Use "g" for grams or "ml" for milliliter **Prices**|*Array, optional*|Array of [`Price`](#refPrice) objects. The prices can (but don't have to) be displayed in the menu card **RevenueAccountId**|*String, optional*|Unique identifier of the [`RevenueAccount`](#refRevenueAccount). **You have to make sure that a RevenueAccount with the `Id` exists in the [RevenueAccounts array](#refMenuImportData)** **VatIds**|*Array, optional*|Array of Strings with unique identifier of the [`Vat`](#refVat). **You have to make sure that a Vat with the `Id` exists in the [Vats array](#refMenuImportData)** **ProductInfoUrl**|*String, optional*|URL providing more info about the item (online only). Local paths are not supported **Ingredients**|*Array, optional*|Array of [`Translatable`](#refTranslatable) objects. The ingredients that will be displayed in the menu card. The ingredients are comma separated inside the `Translatable.val`. These ingredients can be created in multiple languages **Infos**|*Array, optional*|Array of [`Info`](#refInfo) objects **IsSoldOut**|*Boolean, optional*|Indicates whether this item is sold out and unavailable for preorder **LabelGroups**|*Array, optional*|Array of [`LabelGroup`](#refItemLabelGroup)(Item) objects **Ratings**|*Array, optional*|Array of [`Rating`](#refRating) objects **ComponentGroups**|*Array, optional*|Array of [`ComponentGroup`](#refItemComponentGroup)(Item) objects **GTIN**|*String, max length 14*|Unique GTIN (Global Trade Item Number) of the item **CostOfGoodsSold**|*Object, optional*|Direct production costs of the item. See: [`Money`](#refMoney) ### `Component` (object) `Component` inherits all properties of [`Item`](#refItem) and adds a few extra properties. Name | Type | Description --|--|-- **IsOptional**|*Boolean*|Indicates if this is a main or side component **Quantity**|*Integer*|Quantity of the component inside the [`ComponentGroup`](#refComponentGroup). If not specified defaults to 1. Used in `IsOptional=true` [`ComponentGroup`](#refComponentGroup) **Price**|*Decimal, optional*|Price of the component inside the [`ComponentGroup`](#refComponentGroup). Used in `IsOptional=true` [`ComponentGroup`](#refComponentGroup) **Unit**|*Integer, opional*|Unit of the component. The definition of the Integer values can be found [below](#refUnit) **UnitValue**|*Decimal, optional*|Value of the unit > #### Unit Id | Unit ---|---| **0** | Gramm **1** | Kilogram **2** | Milliliter **3** | Liter **4** | Piece > #### Allergen Ids Id | Allergen (English) | Allergen (Deutsch) ---|---|--- **1**|Cereals containing gluten|Glutenhaltiges Getreide **1001**|Wheat|Weizen **1002**|Rye|Roggen **1003**|Barley|Gerste **1004**|Oats|Hafer **2**|Crustaceans|Krebstiere **3**|Eggs|Eier **4**|Fish|Fische **5**|Soybeans|Sojabohnen **6**|Milk|Milch **7**|Peanut|Erdnuss **8**|Nuts|Schalenfrüchte **8001**|Almonds|Mandeln **8002**|Hazelnuts|Haselnüsse **8003**|Walnuts|Walnüsse **8004**|Cashews|Kaschunüsse **8005**|Pecan nuts|Pecannüsse **8006**|Brazil nuts|Paranüsse **8007**|Pistachio nuts|Pistazien **8008**|Macadamia or Queensland nuts|Macadamia- oder Queenslandnüsse **9**|Celery|Sellerie **10**|Mustard|Senf **11**|Sesame seeds|Sesamsamen **12**|Sulphur dioxide and sulphites|Schwefeldioxid und Sulphite **13**|Molluscs|Weichtiere **14**|Lupin|Lupinen ### `NutritionFacts` (object) For `Decimal` two decimals are allowed, use a decimal point (".") as separator Name | Deutsch | Type | Description ---|---|---|--- **CarbsPerServing**|Kohlenhydrate|*Decimal, optional*|Amount of carbs in grams per serving/portion of the item. **SugarPerServing**|Zucker|*Decimal, optional*|Amount of sugar in grams per serving/portion of the item. **PolyolsPerServing**|Mehrwertige Alkohole|*Decimal, optional*|Amount of polyols in grams per serving/portion of the item. **StarchPerServing**|Stärke|*Decimal, optional*|Amount of starch in grams per serving/portion of the item. **FatsPerServing**|Fett|*Decimal, optional*|Amount of fats in grams per serving/portion of the item. **SaturatedFatsPerServing**|Gesättigte Fettsäuren|*Decimal, optional*|Amount of saturated fats in grams per serving/portion of the item. **MonounsaturatedFatsPerServing**|Einfach ungesättigte Fettsäuren|*Decimal, optional*|Amount of monounsaturated fats in grams per serving/portion of the item. **PolyunsaturatedFatsPerServing**|Mehrfach ungesättigte Fettsäuren|*Decimal, optional*|Amount of polunsaturated fats in grams per serving/portion of the item. **KCalPerServing**|KCal|*Integer, optional*|Amount of kilocalories per serving/portion of the item **KJoulePerServing**|KJoule|*Integer, optional*|Amount of kilojoules (Energy) per serving/portion of the item **ProteinsPerServing**|Eiweiß|*Decimal, optional*|Amount of proteins in grams per serving/portion of the item. **FibrePerServing**|Ballaststoffe|*Decimal, optional*|Amount of fibre in grams per serving/portion of the item. **SaltPerServing**|Salz|*Decimal, optional*|Amount of salt in grams per serving/portion of the item. **CarbsPer100**|Kohlenhydrate|*Decimal, optional*|Amount of carbs in grams per 100g of the item **SugarPer100**|Zucker|*Decimal, optional*|Amount of sugar in grams per 100g of the item. **PolyolsPer100**|Mehrwertige Alkohole|*Decimal, optional*|Amount of polyols in grams per 100g of the item. **StarchPer100**|Stärke|*Decimal, optional*|Amount of starch in grams per 100g of the item. **FatsPer100**|Fett|*Decimal, optional*|Amount of fats in grams per 100g of the item. **SaturatedFatsPer100**|Gesättigte Fettsäuren|*Decimal, optional*|Amount of saturated fats in grams per 100g of the item. **MonounsaturatedFatsPer100**|Einfach ungesättigte Fettsäuren|*Decimal, optional*|Amount of monounsaturated fats in grams per 100g of the item. **PolyunsaturatedFatsPer100**|Mehrfach ungesättigte Fettsäuren|*Decimal, optional*|Amount of polyunsaturated fats in grams per 100g of the item. **KCalPer100**|KCal|*Integer, optional*|Amount of kilocalories per 100g of the item. **KJoulePer100**|KJoule|*Integer, optional*|Amount of kilojoules (Energy) per 100g of the item **ProteinsPer100**|Eiweiß|*Decimal, optional*|Amount of proteins in grams per 100g of the item. **FibrePer100**|Ballaststoffe|*Decimal, optional*|Amount of fibre in grams per 100g of the item. **SaltPer100**|Salz|*Decimal, optional*|Amount of salt in grams per 100g of the item. **CholesterolPer100**|Cholesterin|*Decimal, optional*|Amount of cholesterol in milligrams per 100g of the item. **WaterPer100**|Wasser|*Decimal, optional*|Amount of water in grams per 100g of the item. **VitamineA1Per100**|Vitamin A1|*Decimal, optional*|Amount of vitamin A1 in micrograms per 100g of the item. **VitamineB1Per100**|Vitamin B1|*Decimal, optional*|Amount of vitamin B1 in micrograms per 100g of the item. **VitamineB2Per100**|Vitamin B2|*Decimal, optional*|Amount of vitamin B2 in micrograms per 100g of the item. **VitamineB6Per100**|Vitamin B6|*Decimal, optional*|Amount of vitamin B6 in micrograms per 100g of the item. **VitamineB12Per100**|Vitamin B12|*Decimal, optional*|Amount of vitamin B12 in micrograms per 100g of the item. **VitamineCPer100**|Vitamin C|*Decimal, optional*|Amount of vitamin C in milligrams per 100g of the item. **VitamineDPer100**|Vitamin D|*Decimal, optional*|Amount of vitamin D in micrograms per 100g of the item. **VitamineEPer100**|Vitamin E|*Decimal, optional*|Amount of vitamin E in micrograms per 100g of the item. **VitamineHPer100**|Vitamin H|*Decimal, optional*|Amount of vitamin H in micrograms per 100g of the item. **VitamineKPer100**|Vitamin K|*Decimal, optional*|Amount of vitamin K in micrograms per 100g of the item. **BetaCarotenePer100**|Beta-Carotin|*Decimal, optional*|Amount of beta carotene in milligrams per 100g of the item. **NiacinPer100**|Niacin|*Decimal, optional*|Amount of niacin acid (vitamin B3 equivalent) in milligrams per 100g of the item. **PantohenPer100**|Pantothen-säure|*Decimal, optional*|Amount of pantothenic acid (vitamin B5 equivalent) in milligrams per 100g of the item. **FolicAcidPer100**|Folsäure|*Decimal, optional*|Amount of folic acid in micrograms per 100g of the item. **SodiumPer100**|Natrium|*Decimal, optional*|Amount of sodium in milligrams per 100g of the item. **PotassiumPer100**|Kalium|*Decimal, optional*|Amount of potassium in milligrams per 100g of the item. **ChlorinePer100**|Chlor|*Decimal, optional*|Amount of chlorine in milligrams per 100g of the item. **CalciumPer100**|Calcium|*Decimal, optional*|Amount of calcium in milligrams per 100g of the item. **MagnesiumPer100**|Magnesium|*Decimal, optional*|Amount of magnesium in milligrams per 100g of the item. **PhosphorusPer100**|Phosphor|*Decimal, optional*|Amount of phosphorus in milligrams per 100g of the item. **IronPer100**|Eisen|*Decimal, optional*|Amount of iron in milligrams per 100g of the item. **ZincPer100**|Zink|*Decimal, optional*|Amount of zinc in micrograms per 100g of the item. **CopperPer100**|Kupfer|*Decimal, optional*|Amount of copper in micrograms per 100g of the item. **ManganesePer100**|Mangan|*Decimal, optional*|Amount of manganese in micrograms per 100g of the item. **FlouridePer100**|Fluoride|*Decimal, optional*|Amount of flouride in micrograms per 100g of the item. **IodinePer100**|Jod|*Decimal, optional*|Amount of iodine in micrograms per 100g of the item. **PurinePer100**|Purine|*Decimal, optional*|Amount of purine in milligrams per 100g of the item. **UricAcidPer100**|Harnsäure|*Decimal, optional*|Amount of uric acid in milligrams per 100g of the item. **AlcoholPercentPer100**|Alkoholgehalt|*Decimal, optional*|Amount of alcohol in volume percent per 100g of the item. ### `Price` (object) Name | Type | Description ---|---|--- **PriceTagId**|*String*|Id of a [`PriceTag`](#refPriceTag) object **Value**|*Decimal*|Price of the item. Two decimals are allowed, use a decimal point (".") as separator ### `Money` (object) Name | Type | Description ---|---|--- **Value**|*Decimal*|Money amount. Two decimals are allowed, use a decimal point (".") as separator. **CurrencyIso**|*String, optional*|Currency code of the money. Default is `EUR`. ### `Info` (object) Name | Type | Description ---|---|--- **Title** | *Array, optional* | Array of [`Translatable`](#refTranslatable) objects. The title of the Info that will be displayed in our backoffice system. This name can be created in multiple languages **Message** | *Array, optional* | Array of [`Translatable`](#refTranslatable) objects. The message of the Info that will be displayed in our backoffice system. This name can be created in multiple languages **PictureUrl** | *String, optional* | URL of an image (online only). Local paths are not supported **OrderIndex** | *Integer, opional* | OrderIndex of the [Info](#refInfo) ### `ComponentGroup`(Item) (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier of the [`ComponentGroup`](#refComponentGroup). **You have to make sure that a ComponentGroup with the `Id` exists in the [ComponentGroups array](#refComponentGroup)** **Components**|*Array, optional*|Array of [`Component`](#refComponent) objects **ComponentMetas**|*Array, optional*|Array of [`ComponentMeta`](#refComponentMeta) objects ### `ComponentMeta`(object) Name | Type | Description ---|---|--- **PLU**|*String, max length 50*|Unique identifier specified by external party. The item will not be imported if the PLU is empty or missing. This Id will also be used for future updates of an existing item. **You have to make sure that a Item with `PLU` exists in the [Items array](#refMenuImportData)** **IsOptional**|*Boolean*|Indicates if this is a main or side component **Quantity**|*Integer*|Quantity of the component inside the [`ComponentGroup`](#refComponentGroup). Used in `IsOptional=true` [`ComponentGroup`](#refComponentGroup) **Price**|*Decimal, optional*|Price of the component inside the [`ComponentGroup`](#refComponentGroup). Used in `IsOptional=true` [`ComponentGroup`](#refComponentGroup) **Unit**|*Integer, opional*|Unit of the component. The definition of the Integer values can be found [above](#refUnit) **UnitValue**|*Decimal, optional*|Value of the unit ### `LabelGroup`(Item) (object) Name | Type | Description ---|---|--- **Id**|*String*|Unique identifier of the [`LabelGroup`](#refLabelGroup). **You have to make sure that a LabelGroup with the `Id` exists in the [LabelGroups array](#refLabelGroup)** **LabelIds**|*Array*|Array of [`Label`](#refLabel).`Id`. **You have to make sure that a Label with the `Id` exists in the [Label array](#refLabel)** ### `Rating` (object) Name | Type | Description ---|---|--- **RatingLabelId**|*String*|Unique identifier of the [`RatingLabel`](#refRatingLabel). **You have to make sure that a RatingLabel with the `Id` exists in the [RatingLabels array](#refRatingLabel)** **Value**|*Decimal, optional*|The value (if available/appropriate) of the respektive label # Group Menu import The qnips MenuImport API resources are listed here. Some general information about the API requests: - Authentication headers should look like: **Authorization:usr={username}&pwd={password}**. Where "username" and "password" are the login credentials of the [qnips User](#refQnipsUser). - Responses are in JSON format. - URL Prelive environment: `https://myprelive.qnips.com/dbapi` - When the authentication fails, the request will be denied with the http Status Code 401 (Unauthorized). - If -for any reason- qnips is not able to finalize the import process, qnips will respond with a http Status Code 500 (Internal Server Error). ## Brands [/dbapi/menuimport/brands] The following resources are available: ### GET: Brands [GET /dbapi/menuimport/brands] - This GET resource returns a list of brands available for the [qnips user](#refQnipsUser). + Request + Headers Authorization: usr={username}&pwd={password} + Response 200 (application/json) [ { "Id": 1, "Name": "Brand ABC" }, { "Id": 2, "Name": "Brand XYZ" } ] ## BrandInfo [/dbapi/menuimport/brandinfo] The following resources are available: ### GET: BrandInfo [GET /dbapi/menuimport/brandinfo{?id}] - This GET resource returns more detailed information of a specific brand. + Parameters + id (long, required) - Reference Id of the brand, defined by qnips + Request + Headers Authorization: usr={username}&pwd={password} + Response 200 (application/json) { "MenuCards": [ { "Id": 1, "Name": "Card1" }, { "Id": 2, "Name": "Card2" } ], "Sortiments": [ { "Id": 1, "Name": "Sort1", "StoreThirdPartyId": "YOUR-STORE-ID-369", "ThirdPartyId": "YOUR-ID-123" }, { "Id": 2, "Name": "Sort2", "StoreThirdPartyId": "YOUR-STORE-ID-024", "ThirdPartyId": "YOUR-ID-679" } ] } ## MenuCards [/dbapi/menuimport/menucards] The following resources are available: ### POST: MenuCards [POST /dbapi/menuimport/menucards{?brandId,sortId,cardId}] - This POST resource will create or update one or more menu card week objects and all their relevant data objects. - Content-type **application/json** or **text/xml** are allowed. - The request will be denied with http PreconditionFailed (HttpStatusCode 412), when the brandId, sortId or cardId is invalid. - The request will be denied with the http Status Code 401 (Unauthorized), when the [qnips User](#refQnipsUser) has insufficient edit rights ("Speiseplan bearbeiten") in the qnips Dashboard. + Parameters + brandId (long, required) - Reference Id of the brand, defined by qnips + sortId (long, required) - Reference Id of the sortiment, defined by qnips + cardId (long, required) - Reference Id of the menu card, defined by qnips + Request (application/json) + Headers Authorization: usr={username}&pwd={password} + Body { "PriceTags": [ { "Id": "1", "InternalName": "pricetag 1", "CurrencyIso": "EUR", "PublicName": [ { "lang": "de-DE", "val": "pricetag 1 de" }, { "lang": "en-US", "val": "pricetag 1 en" } ], "PublicLabel": [ { "lang": "de-DE", "val": "pricetag 1" } ] } ], "SortimentGroups": [ { "PLU": "SORT-1", "Name": "SortimentGroup 1", "RevenueAccountId": "1", "VatInfo": { "Takeaway": 1.0, "EatIn": 2.0, "Custom": [ { "PublicName": [ { "lang": "de-DE", "val": "CustomVAT" } ], "Rate": 3.0 } ] }, "VatIds": [ "1", "2" ] } ], "RevenueAccounts": [ { "Id": "1", "PublicName": [ { "lang": "de-DE", "val": "RevenueAccount 1" } ] }, { "Id": "2", "PublicName": [ { "lang": "de-DE", "val": "RevenueAccount 2" } ] } ], "Vats": [ { "Id": "1", "PublicName": [ { "lang": "de-DE", "val": "Vat 1 de" } ], "Type": 0, "Rate": 10.5 }, { "Id": "2", "PublicName": [ { "lang": "de-DE", "val": "Vat 2 de" } ], "Type": 1, "Rate": 17.5 } ], "Additives": [ { "Id": "1", "PublicName": [ { "lang": "de-DE", "val": "Additive 1 de" } ], "PublicLabel": [ { "lang": "de-DE", "val": "Additive 1" } ], "IconUrl": null }, { "Id": "2", "PublicName": [ { "lang": "de-DE", "val": "Additive 2 de" } ], "PublicLabel": [ { "lang": "de-DE", "val": "Additive 2" } ], "IconUrl": null } ], "CustomTags": [ { "Id": "1", "PublicName": [ { "lang": "de-DE", "val": "CustomTag 1 de" } ], "PublicLabel": [ { "lang": "de-DE", "val": "CustomTag 1" } ], "IconUrl": null }, { "Id": "2", "PublicName": [ { "lang": "de-DE", "val": "CustomTag 2 de" } ], "PublicLabel": [ { "lang": "de-DE", "val": "CustomTag 2" } ], "IconUrl": null } ], "ComponentGroups": [ { "Id": "1", "InternalName": "ComponentGroup 1", "PublicName": [ { "lang": "de-DE", "val": "ComponentGroup 1 de" } ], "HasFixedComponents": false, "IsOptional": false, "IsHidden": false, "MinGroupQuantity": 0, "MaxGroupQuantity": 1, "MaxComponentQuantity": 2 }, { "Id": "2", "InternalName": "ComponentGroup 2", "PublicName": [ { "lang": "de-DE", "val": "ComponentGroup 2 de" } ], "HasFixedComponents": false, "IsOptional": true, "IsHidden": false, "MinGroupQuantity": 1, "MaxGroupQuantity": 2, "MaxComponentQuantity": 3 } ], "RatingLabels": [ { "Id": "1", "InternalName": "NutritionLabel 1", "PublicName": [ { "lang": "de-DE", "val": "NutritionLabel 1 de" } ], "Description": [ { "lang": "de-DE", "val": "NutritionLabel 1" } ], "Type": 0, "IconUrl": null }, { "Id": "2", "InternalName": "CO2 2", "PublicName": [ { "lang": "de-DE", "val": "CO2 2 de" } ], "Description": [ { "lang": "de-DE", "val": "CO2 2 de" } ], "Type": 1, "IconUrl": null }, { "Id": "3", "InternalName": "Waterfootprint 3", "PublicName": [ { "lang": "de-DE", "val": "Waterfootprint 3 de" } ], "Description": [ { "lang": "de-DE", "val": "Waterfootprint 3" } ], "Type": 2, "IconUrl": null }, { "Id": "4", "InternalName": "HealthScore 4", "PublicName": [ { "lang": "de-DE", "val": "HealthScore 4 de" } ], "Description": [ { "lang": "de-DE", "val": "HealthScore 4" } ], "Type": 3, "IconUrl": null }, { "Id": "5", "InternalName": "AnimalTreatment 5", "PublicName": [ { "lang": "de-DE", "val": "AnimalTreatment 5 de" } ], "Description": [ { "lang": "de-DE", "val": "AnimalTreatment 5" } ], "Type": 4, "IconUrl": null }, { "Id": "6", "InternalName": "Rainforest 6", "PublicName": [ { "lang": "de-DE", "val": "Rainforest 6 de" } ], "Description": [ { "lang": "de-DE", "val": "Rainforest 6" } ], "Type": 5, "IconUrl": null } ], "Labels": [ { "Id": "1", "InternalName": "Label 1", "PublicName": [ { "lang": "de-DE", "val": "Label 1 de" } ] }, { "Id": "2", "InternalName": "Label 2", "PublicName": [ { "lang": "de-DE", "val": "Label 2 de" } ] } ], "LabelGroups": [ { "Id": "1", "InternalName": "LabelGroup 1", "PublicName": [ { "lang": "de-DE", "val": "LabelGroup 1 de" } ] } ], "Items": [ { "PLU": "PROD-1", "SortimentGroupPLU": "SORT-1", "InternalName": "Item 1", "PublicName": [ { "lang": "de-DE", "val": "Item 1 de" } ], "AppName": [ { "lang": "de-DE", "val": "Item 1 de" } ], "Description": [ { "lang": "de-DE", "val": "Item 1 de" } ], "Teaser": [ { "lang": "de-DE", "val": "Item 1 de" } ], "PictureUrl": null, "CoverUrls": [ "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png" ], "AllergenIds": [ 1, 1003, 1004, 6, 8, 8004 ], "AllergenTracesIds": [ 8 ], "AdditiveIds": [ "1", "2" ], "CustomTagIds": [ "1", "2" ], "NutritionFacts": { "CarbsPerServing": 0.2, "SugarPerServing": 0.22, "PolyolsPerServing": 0.222, "StarchPerServing": 0.2222, "FatsPerServing": 0.22222, "SaturatedFatsPerServing": 0.222222, "MonounsaturatedFatsPerServing": 0.2222222, "PolyunsaturatedFatsPerServing": 0.22222222, "KCalPerServing": 2222, "KJoulePerServing": 22222, "ProteinsPerServing": 0.22222222222, "FibrePerServing": 0.222222222222, "SaltPerServing": 0.2222222222222, "CarbsPer100": 0.1, "SugarPer100": 0.11, "PolyolsPer100": 0.111, "StarchPer100": 0.1111, "FatsPer100": 0.11111, "SaturatedFatsPer100": 0.111111, "MonounsaturatedFatsPer100": 0.1111111, "PolyunsaturatedFatsPer100": 0.11111111, "KCalPer100": 1111, "KJoulePer100": 11111, "ProteinsPer100": 0.11111111111, "FibrePer100": 0.111111111111, "SaltPer100": 0.1111111111111, "CholesterolPer100": 0.1, "WaterPer100": 0.1, "VitamineA1Per100": 0.1, "VitamineB1Per100": 0.1, "VitamineB2Per100": 0.1, "VitamineB6Per100": 0.1, "VitamineB12Per100": 0.1, "VitamineCPer100": 0.1, "VitamineDPer100": 0.1, "VitamineEPer100": 0.1, "VitamineHPer100": 0.1, "VitamineKPer100": 0.1, "BetaCarotenePer100": 0.1, "NiacinPer100": 0.1, "PantohenPer100": 0.1, "FolicAcidPer100": 0.1, "SodiumPer100": 0.1, "PotassiumPer100": 0.1, "ChlorinePer100": 0.1, "CalciumPer100": 0.1, "MagnesiumPer100": 0.1, "PhosphorusPer100": 0.1, "IronPer100": 0.1, "ZincPer100": 0.1, "CopperPer100": 0.1, "ManganesePer100": 0.1, "FlouridePer100": 0.1, "IodinePer100": 0.1, "PurinePer100": 0.1, "UricAcidPer100": 0.1, "AlcoholPercentPer100": 0.1 }, "ServingSize": 200, "ServingSizeUnit": "g", "Prices": [ { "PriceTagId": "1", "Value": 5 } ], "Infos": [ { "Title": [ { "lang": "de-DE", "val": "Title de" } ], "Message": [ { "lang": "de-DE", "val": "Message de" } ], "PictureUrl": null, "OrderIndex": "1" } ], "ProductInfoUrl": "https://somehost.org/iteminfo/12345", "RevenueAccountId": "1", "VatIds": [ "1", "2" ], "Ingredients": [ { "lang": "de-DE", "val": "Salt" }, { "lang": "de-DE", "val": "Pepper" } ], "IsSoldOut": "false", "GTIN": "12345678901234", "VatInfo": { "Takeaway": 1.0, "EatIn": 2.0, "Custom": [ { "PublicName": [ { "lang": "de-DE", "val": "CustomVAT" } ], "Rate": 3.0 } ] }, "Ratings": [ { "RatingLabelId": "1", "ShowIcon": true }, { "RatingLabelId": "2", "Value": 123, "ShowIcon": true }, { "RatingLabelId": "3", "Value": 456, "ShowIcon": true } ], "LabelGroups": [ { "Id": "1", "LabelIds": [ "1", "2" ] } ], "ComponentGroups": [ { "Id": "1", "Components": [ { "PLU": "COMP-1", "SortimentGroupPLU": "SORT-1", "InternalName": "Component 1", "PublicName": [ { "lang": "de-DE", "val": "Component 1 de" } ], "AppName": [ { "lang": "de-DE", "val": "Component 1 de" } ], "Description": [ { "lang": "de-DE", "val": "Component 1 de" } ], "Teaser": [ { "lang": "de-DE", "val": "Component 1 de" } ], "PictureUrl": null, "CoverUrls": [ "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png" ], "AllergenIds": [ 1, 1003, 1004, 6, 8, 8004 ], "AllergenTracesIds": [ 8 ], "AdditiveIds": [ "1", "2" ], "CustomTagIds": [ "1", "2" ], "NutritionFacts": { "CarbsPerServing": 0.2, "SugarPerServing": 0.22, "PolyolsPerServing": 0.222, "StarchPerServing": 0.2222, "FatsPerServing": 0.22222, "SaturatedFatsPerServing": 0.222222, "MonounsaturatedFatsPerServing": 0.2222222, "PolyunsaturatedFatsPerServing": 0.22222222, "KCalPerServing": 2222, "KJoulePerServing": 22222, "ProteinsPerServing": 0.22222222222, "FibrePerServing": 0.222222222222, "SaltPerServing": 0.2222222222222, "CarbsPer100": 0.1, "SugarPer100": 0.11, "PolyolsPer100": 0.111, "StarchPer100": 0.1111, "FatsPer100": 0.11111, "SaturatedFatsPer100": 0.111111, "MonounsaturatedFatsPer100": 0.1111111, "PolyunsaturatedFatsPer100": 0.11111111, "KCalPer100": 1111, "KJoulePer100": 11111, "ProteinsPer100": 0.11111111111, "FibrePer100": 0.111111111111, "SaltPer100": 0.1111111111111 }, "ServingSize": 200, "ServingSizeUnit": "g", "Prices": [ { "PriceTagId": 1, "Value": 55 } ], "ProductInfoUrl": "https://somehost.org/iteminfo/12345", "IsOptional": false, "Quantity": 1, "Price": 1.0 }, { "PLU": "COMP-2", "SortimentGroupPLU": "SORT-1", "InternalName": "Component 2", "PublicName": [ { "lang": "de-DE", "val": "Component 2 de" } ], "AppName": [ { "lang": "de-DE", "val": "Component 2 de" } ], "Description": [ { "lang": "de-DE", "val": "Component 2 de" } ], "Teaser": [ { "lang": "de-DE", "val": "Component 2 de" } ], "PictureUrl": null, "CoverUrls": [ "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png" ], "AllergenIds": [ 1, 1003, 1004, 6, 8, 8004 ], "AllergenTracesIds": [ 8 ], "AdditiveIds": [ "1", "2" ], "CustomTagIds": [ "1", "2" ], "NutritionFacts": { "CarbsPerServing": 0.2, "SugarPerServing": 0.22, "PolyolsPerServing": 0.222, "StarchPerServing": 0.2222, "FatsPerServing": 0.22222, "SaturatedFatsPerServing": 0.222222, "MonounsaturatedFatsPerServing": 0.2222222, "PolyunsaturatedFatsPerServing": 0.22222222, "KCalPerServing": 2222, "KJoulePerServing": 22222, "ProteinsPerServing": 0.22222222222, "FibrePerServing": 0.222222222222, "SaltPerServing": 0.2222222222222, "CarbsPer100": 0.1, "SugarPer100": 0.11, "PolyolsPer100": 0.111, "StarchPer100": 0.1111, "FatsPer100": 0.11111, "SaturatedFatsPer100": 0.111111, "MonounsaturatedFatsPer100": 0.1111111, "PolyunsaturatedFatsPer100": 0.11111111, "KCalPer100": 1111, "KJoulePer100": 11111, "ProteinsPer100": 0.11111111111, "FibrePer100": 0.111111111111, "SaltPer100": 0.1111111111111 }, "ServingSize": 200, "ServingSizeUnit": "g", "Prices": [ { "PriceTagId": 1, "Value": 33 } ], "ProductInfoUrl": "https://somehost.org/iteminfo/12345", "IsOptional": false, "Quantity": 2, "Price": 2.0 } ] }, { "Id": "2", "ComponentMetas": [ { "PLU": "COMP-3", "IsOptional": true, "Quantity": 3, "Price": 3.3, "Unit": 0, "UnitValue": 123 } ] } ] }, { "PLU": "COMP-3", "SortimentGroupPLU": "SORT-1", "InternalName": "Component 3", "PublicName": [ { "lang": "de-DE", "val": "Component 3 de" } ], "AppName": [ { "lang": "de-DE", "val": "Component 3 de" } ], "Description": [ { "lang": "de-DE", "val": "Component 3 de" } ], "Teaser": [ { "lang": "de-DE", "val": "Component 3 de" } ], "PictureUrl": null, "CoverUrls": [ "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png" ], "AllergenIds": [ 1, 1003, 1004, 6, 8, 8004 ], "AllergenTracesIds": [ 8 ], "AdditiveIds": [ "1", "2" ], "CustomTagIds": [ "1", "2" ], "NutritionFacts": { "CarbsPerServing": 0.2, "SugarPerServing": 0.22, "PolyolsPerServing": 0.222, "StarchPerServing": 0.2222, "FatsPerServing": 0.22222, "SaturatedFatsPerServing": 0.222222, "MonounsaturatedFatsPerServing": 0.2222222, "PolyunsaturatedFatsPerServing": 0.22222222, "KCalPerServing": 2222, "KJoulePerServing": 22222, "ProteinsPerServing": 0.22222222222, "FibrePerServing": 0.222222222222, "SaltPerServing": 0.2222222222222, "CarbsPer100": 0.1, "SugarPer100": 0.11, "PolyolsPer100": 0.111, "StarchPer100": 0.1111, "FatsPer100": 0.11111, "SaturatedFatsPer100": 0.111111, "MonounsaturatedFatsPer100": 0.1111111, "PolyunsaturatedFatsPer100": 0.11111111, "KCalPer100": 1111, "KJoulePer100": 11111, "ProteinsPer100": 0.11111111111, "FibrePer100": 0.111111111111, "SaltPer100": 0.1111111111111 }, "ServingSize": 200, "ServingSizeUnit": "g", "Prices": [ { "PriceTagId": 1, "Value": 11 } ], "ProductInfoUrl": "https://somehost.org/iteminfo/12345" } ], "Weeks": [ { "Name": "KW1", "MondayDate": "2023-02-27", "HeaderHtml": "HeaderHtml goes here
You can add whatever you want - NEW
", "FooterHtml": "FooterHtml goes hereYou can add whatever you want - NEW
", "ActiveDays": [ 0, 1, 3 ], "Categories": [ { "InternalName": "Category 1", "PublicName": [ { "lang": "de-DE", "val": "Category 1 de" } ], "AppName": [ { "lang": "de-DE", "val": "Category 1 de" } ], "VisibleInApp": true, "PictureUrl": "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png", "OrderIndex": 2, "Days": [ { "Date": "2023-02-27", "ItemPLUs": [ "PROD-1" ] }, { "Date": "2023-02-28", "Items": [ { "PLU": "PROD-2", "SortimentGroupPLU": "SORT-1", "InternalName": "Item 2", "PublicName": [ { "lang": "de-DE", "val": "Item 2 de" } ], "AppName": [ { "lang": "de-DE", "val": "Item 2 de" } ], "Description": [ { "lang": "de-DE", "val": "Item 2 de" } ], "Teaser": [ { "lang": "de-DE", "val": "Item 2 de" } ], "PictureUrl": null, "CoverUrls": [ "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png" ], "AllergenIds": [ 1, 1003, 1004, 6, 8, 8004 ], "AllergenTracesIds": [ 8 ], "AdditiveIds": [ "1", "2" ], "CustomTagIds": [], "NutritionFacts": { "CarbsPerServing": 0.2, "SugarPerServing": 0.22, "PolyolsPerServing": 0.222, "StarchPerServing": 0.2222, "FatsPerServing": 0.22222, "SaturatedFatsPerServing": 0.222222, "MonounsaturatedFatsPerServing": 0.2222222, "PolyunsaturatedFatsPerServing": 0.22222222, "KCalPerServing": 2222, "KJoulePerServing": 22222, "ProteinsPerServing": 0.22222222222, "FibrePerServing": 0.222222222222, "SaltPerServing": 0.2222222222222, "CarbsPer100": 0.1, "SugarPer100": 0.11, "PolyolsPer100": 0.111, "StarchPer100": 0.1111, "FatsPer100": 0.11111, "SaturatedFatsPer100": 0.111111, "MonounsaturatedFatsPer100": 0.1111111, "PolyunsaturatedFatsPer100": 0.11111111, "KCalPer100": 1111, "KJoulePer100": 11111, "ProteinsPer100": 0.11111111111, "FibrePer100": 0.111111111111, "SaltPer100": 0.1111111111111 }, "ServingSize": 200, "ServingSizeUnit": "g", "Prices": [ { "PriceTagId": 1, "Value": 55 } ], "RevenueAccountId": "1", "VatIds": [ "1", "2" ], "ProductInfoUrl": "https://somehost.org/iteminfo/12345" } ] } ] } ] } ] } + Response 200 + Request (text/xml) + Headers Authorization: usr={username}&pwd={password} + BodyYou can add whatever you want
]]>You can add whatever you want
]]>You can add whatever you want - NEW
", "FooterHtml": "FooterHtml goes hereYou can add whatever you want - NEW
", "ActiveDays": [ 0, 1, 3 ], "Categories": [ { "InternalName": "Category 1", "PublicName": [ { "lang": "de-DE", "val": "Category 1 de" } ], "AppName": [ { "lang": "de-DE", "val": "Category 1 de" } ], "VisibleInApp": true, "PictureUrl": "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png", "OrderIndex": 2, "Days": [ { "Date": "2023-02-27", "ItemPLUs": [ "PROD-1" ] }, { "Date": "2023-02-28", "Items": [ { "PLU": "PROD-2", "SortimentGroupPLU": "SORT-1", "InternalName": "Item 2", "PublicName": [ { "lang": "de-DE", "val": "Item 2 de" } ], "AppName": [ { "lang": "de-DE", "val": "Item 2 de" } ], "Description": [ { "lang": "de-DE", "val": "Item 2 de" } ], "Teaser": [ { "lang": "de-DE", "val": "Item 2 de" } ], "PictureUrl": null, "CoverUrls": [ "https://qnips.blob.core.windows.net/preliveicons/icqnips_2019.01.20_12.11.34.png" ], "AllergenIds": [ 1, 1003, 1004, 6, 8, 8004 ], "AllergenTracesIds": [ 8 ], "AdditiveIds": [ "1", "2" ], "CustomTagIds": [], "NutritionFacts": { "CarbsPerServing": 0.2, "SugarPerServing": 0.22, "PolyolsPerServing": 0.222, "StarchPerServing": 0.2222, "FatsPerServing": 0.22222, "SaturatedFatsPerServing": 0.222222, "MonounsaturatedFatsPerServing": 0.2222222, "PolyunsaturatedFatsPerServing": 0.22222222, "KCalPerServing": 2222, "KJoulePerServing": 22222, "ProteinsPerServing": 0.22222222222, "FibrePerServing": 0.222222222222, "SaltPerServing": 0.2222222222222, "CarbsPer100": 0.1, "SugarPer100": 0.11, "PolyolsPer100": 0.111, "StarchPer100": 0.1111, "FatsPer100": 0.11111, "SaturatedFatsPer100": 0.111111, "MonounsaturatedFatsPer100": 0.1111111, "PolyunsaturatedFatsPer100": 0.11111111, "KCalPer100": 1111, "KJoulePer100": 11111, "ProteinsPer100": 0.11111111111, "FibrePer100": 0.111111111111, "SaltPer100": 0.1111111111111 }, "ServingSize": 200, "ServingSizeUnit": "g", "Prices": [ { "PriceTagId": 1, "Value": 55 } ], "RevenueAccountId": "1", "VatIds": [ "1", "2" ], "ProductInfoUrl": "https://somehost.org/iteminfo/12345" } ] } ] } ] } } + Response 200 + Request (text/xml) + Headers Authorization: usr={username}&pwd={password} + BodyYou can add whatever you want
]]>You can add whatever you want
]]>