> This page is for API Reference.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://fiftytwo-demo.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://fiftytwo-demo.ferndocs.com/_mcp/server.

# Insert/update list of articles for all stores

POST https://api.fiftytwo.com/masterdata/articles/v1/chain/{chain}
Content-Type: application/json

Only supported for 52ViKING enterprise service endpoints.

Reference: https://fiftytwo-demo.ferndocs.com/api/master-data/reference/articles/ec

## Request

### Path parameters

- `chain` (integer, required) — The ID of the Chain

### Body (application/json)

This endpoint expects an articles.

- `articles` (list of ArticlesArticlesItems, required)

## Response

### 202

Accepted

## Errors

### 400 Bad Request Error

Bad Request

- `string`

## Types

### ArticlesArticlesItems

- `articleId` (integer, required) — An article ID is a number that can be constructed based on the following principles:EAN-14EAN-13EAN-8UPCPLU numbersPLUS numbersArticle group or department numbersOwn article numbersSee also the barcode parameter.
- `articleTextReceipt` (string, optional) — Text that represents the article on receipts. Can, in addition to receipt text, contain the following:Reference to other article number. Written like this: =>1234567890123, where 1234567890123 is the article number that's referred to=>57 \* 6, where the reference sells 6 units of article number 57.When selling the article number in question, the article number is converted to the referenced number, and the PLU information of the referenced number is used.Note that this reference mechanism can also be achieved using the barcodes segment.Reference to means of payment. Used when scanning bottle redemption slips and similar. The entry code for this article must be "B". The means of payment code is indicated by the three first characters. The remaining characters are for general use (not printed on receipt). Example: 500 bottle redemption slip (means of payment 500 must exist)Receipt text: The current number of characters that can be printed on receipts is controlled by '>b' in VB10.
- `articleSupplementaryText` (string, optional) — Used for article-related information for shop assiatstants or customers. Example: This article needs 3 AA batteries to workUse articleSupplementaryTextType to define where the information is shown.
- `articleSupplementaryTextType` (integer, optional) — Defines how the articleSupplementaryText is displayed. This depends on definition of text segments for articles, and should be agreed with your Fiftytwo consultant. Suggested values are: 1. Show on shop assistant display2. Print on receipt and show on shop assistant displayA value of 0 will replace the articleTextReceipt on the shop assistant display. This is useful when longer texts are needed for an article and can be done without adding text sections to the article.
- `articleFamilyId` (integer, optional) — A reference number that ties together related articles with different article numbers. Used for triggering quantity discounts across article numbers. Use discount families to maintain such master data.
- `articleGroupId` (integer, optional) — A reference number that ties the article to an article group. The fact that an article belongs in article group can be used for many purposes, such as article group-based discounts, article group-based statistics, or article group-based thresholds (for example how many articles from an article group that shop assistants can sell with a POS's multiply function). You maintain article groups via the articleGroup endpoint.
- `category` (integer, optional)
- `assortment` (integer, optional)
- `statisticsCode` (integer, optional)
- `vatCode` (integer, optional) — Used for the following purposes:Deduction of VAT for export salesRecalculation of price in case of VAT changesSpecification of VAT for special customersCalculation of gross profit on articles as well as departments/article groups
- `numberOfDecimals` (integer, optional) — Defines the number of decimals that can be entered on the POS. For articles with barcodes that are defined as weight-variable, the field is used to indicate the position of the comma in the barcode. Example: 2622220036145 leads to article number 262222 in a quantity of 3,614 if the number of decimals is set to 3. The price of the article must then be set up as price per kilo. You can use the following values:0 decimals1 decimal2 decimals3 decimals Note that the definition of the barcode in \_EAN must match this setting. If no weight is configured for the barcode and this setting is > 0, the shop assistant will be prompted for weight information.
- `entryCode` (enum, optional) — Defines if it's allowed to enter prices on the POS. \<ul>E = Price must not be entered on POS. Article is sold at the price defined in the price field.P = Price can be entered on POS. If price is 0, a new price must be entered. Otherwise a price change is optional on the POS.X = Article must not be sold. This may apply to raw materials or articles on pallets.B = The scanner number is a means of payment. The means of payment code must be defined in the receipt text.\<ul>
  - Allowed values: `E`, `P`, `X`, `B`
- `staffDiscountCode` (integer, optional) — A reference to the rate to use for calculation of staff discount. You can use the following values:1 = Staff discount rate 1.2 = Staff discount rate 23 = Staff discount rate 34 = Staff discount rate 45 = Staff discount rate 56 = Staff discount rate 67 = Staff discount rate 78 = Staff discount rate 89 = Staff discount rate 90 = No staff discount rateYou define staff discount rates in Bpar.prapct. Ask your Fiftytwo consultant if you're in doubt.
- `additionalTextSegment` (integer, optional) — Four-digit number of a text section (VB10). Text sections must be within the interval 8000 to 9999. The text section defines where the text is printed on the receipt, either directly beneath the article line (for example a serial number) or at the bottom of the receipt (for example a warranty certificate). Text sections are typically maintained bu Fiftytwo consultants. Ask your Fiftytwo consultant if you're in doubt.
- `costPrice` (double, optional) — The supplier's cost price. Cost price must be including or excluding VAT according to Bpar.kpmoms (ask your Fiftytwo consultant if you're in doubt). A negative value indicates expected gross profit percentage.
- `price` (double, optional) — Sales price. Normally the sales price of one unit of the article. See, however, also packageOrUnitPrice, entryCode, and numberOfDecimals.
- `multiplyAllowed` (integer, optional) — Defines if use of a POS's multiply key (X) is allowed for the article.0 = No, quantity must never be specified. May, for example, be relevant for articles where you need to register additional individual information, such as a serial number.1 = Yes, quantity can be specified.2 = Yes, quantity must always be specified. Used for articles that are not normally sold as one unit, for example articles that are sold by running meter or by weight.3 = Quantity can be specified, but content must always be specified. Used for articles that have different content, for example planks of wood that have the same article number regardless of length. The article can then be sold as, for example, 10 planks of 2,70 meters. Quantity of articles is registered with the (X) key, and the POS then asks for the length or similar.
- `repeatAllowed` (enum, optional) — Defines if use of a POS's repeat last line key (REPEAT) is allowed for the article.0 = No1 = Yes
  - Allowed values: `0`, `1`
- `erpArticleId` (integer, optional) — The ID of the article in your organization's ERP system.
- `packageOrUnitPrice` (integer, optional) — Defines the following:Sales: Only has impact on weight-variable articles, where the field defines whether the specified price is a price per kilo or a fixed price for one pack.Returns: Simulates return method 0 for the article in question, regardless of which return method is otherwise defined.Valid values are:0 = Price per kilo1 = Pack price, regardless of content2 = Simulate return method 0 according to PA023 = 1 and 2Note: If you want to give a discount on an article where the barcode contains weight information, you must use discountCode 4 or 5.
- `totalDiscountFlag` (enum, optional) — Defines if the article in question must trigger a specific discount.0 = No1 = YesThe discount information is fetched from the PA04 parameters.
  - Allowed values: `0`, `1`
- `salesRule` (integer, optional) — Reference to a sales rule. A sales rule can trigger a notification that shop assistants must respond to. Definition of sales rules is handled by Fiftytwo consultants
- `voucherProvider` (integer, optional) — A voucher article is a non-physical article (for example talk time for a mobile phone) that's delivered by printing a voucher on the POS printer. The voucher typically contains an activation code. The individual article instance is associated with a voucher number that provides access to a separate record that contains the data (for example the activation code) that's associated with the individual article instance in question. The voucher number is unique across article numbers. This field defines if the article in question is a voucher article, and, if that's the case, which provider it comes from. 0 = Not a voucher article1 = Goyada2 = Top Up3 = Lotto4 = Payzone5 = REA gift card6 = Blackhawk gift card7 = Goyada, new method8 = Blackhawk POR (Print On Request) / DAR (Digtital Account Request)9 = Epay POR (Print On Request)10 = Epay closed loop (external giftcards with balance)11 = Epay POSA (Point Of Sale Activation)90 = Downpayment
- `applyNegativePrice` (enum, optional) — If selected, the price gets an opposite sign, that is negative instead of positive. Can, for example, be used for bottle deposit refunds
  - Allowed values: `0`, `1`
- `additionInformation` (enum, optional) — Registration of additional information.0 = No additional information1 = Goods intake date. The information must be part of the barcode and can be defined via \_EAN field type "d"
  - Allowed values: `0`, `1`
- `statisticsCode1` (integer, optional)
- `statisticsCode2` (integer, optional)
- `linkedArticle` (integer, optional) — Possibility of defining a 13-digit linked article number, which will then automatically be added to the sale when article is sold. Examples: Bottle deposit for a soft drink (where the bottle deposit is the linked article). Compulsory safety net for a trampoline (where the safety net is the linked article).
- `savingStampsEnabled` (enum, optional) — Defines if the article in question should be included in calculation of savings stamps. This flag is only used if Bpar.mrkflg=1. 0 = No, don't include the article1 = Yes, include the article
  - Allowed values: `0`, `1`
- `indicativePrice` (double, optional) — The article's suggested retail price or standard price.
- `assortment1` (integer, optional)
- `assortment2` (integer, optional)
- `salesGroupId` (integer, optional) — Sales grouping with possibility of defining a maximum allowed sale within individual sales groupings. Primarily used for limiting sales of over-the-counter medicines.The sales group ID is a reference to an existing sales group. Sales groups are maintained using the Salesgroups endpoints.
- `restrictions` (ArticlesArticlesItemsRestrictions, optional) — Optional restrictions that control who can purchase the article.
- `displayGroup` (integer, optional) — Diaplay groups can be used for automatic creation of easy access links on some POS units. If != 0 the display group that an article belongs in. Ask your Fiftytwo consultant if you're in doubt.
- `PLC` (integer, optional) — Product life cycle code. Used for filtering out articles in queries from, for example, POSs.
- `discount` (ArticlesArticlesItemsDiscount, optional)
- `images` (list of ArticlesArticlesItemsImagesItems, optional) — A list of images that can be used to identify an article visually. At most one image can be marked as default (isDefault: 1).
- `foodAndBeverage` (ArticlesArticlesItemsFoodAndBeverage, optional)
- `reorder` (ArticlesArticlesItemsReorder, optional) — Only used if 52ViKING handles reordering. Ask your Fiftytwo consultant if you're in doubt.
- `control` (ArticlesArticlesItemsControl, optional)
- `barcodes` (list of ArticlesArticlesItemsBarcodesItems, optional) — A list of articleIds that point to the articleId. You can associate the article with one or multiple barcodes, and specify a quantity associated with each barcode. Example: You want to associate an article with two barcodes: One for a single unit of the article (the barcode on the article itself) and one for a box of 24 units of the article (the barcode on the 24-unit box). To remove all barcodes pointing to an article, use an empty barcodes array.
- `shelfLabel` (ArticlesArticlesItemsShelfLabel, optional) — You can specify shelf-edge label settings for the article. Depending on the setup of your shelf-edge label system, shelf-edge labels will then be printed, marked for printing, or updated (if you use electronic shelf labels, ESLs) when you change article information, such as price, name, etc. Ask your Fiftytwo consultant if you're in doubt.
- `variantIds` (list of integer, optional) — A list of variant groups available for this article. Variants represent product characteristics such as Color, Size, or other configurable attributes. Assigning variant IDs determines which types of variations the customer can choose when purchasing this article.
- `modifierIds` (list of integer, optional) — A list of modifier groups that apply to this article. Modifiers represent optional add-ons—such as gift wrapping, accessories, or customizable extras—that can be selected during the sale.
- `specificationIds` (list of integer, optional) — A list of specification groups relevant for this article. Specifications describe technical or functional features—such as display type, performance level, or other attribute sets—that help define the article’s detailed configuration.
- `articleLabels` (list of ArticlesArticlesItemsArticleLabelsItems, optional) — List of label objects pointing to the associated articleId.Labels (preview feature) are automatically created if they do not already exist. If a label already exists, the existing label ID is reused.Article labels are provided for early integration and forward compatibility. This capability is not yet generally available and is not recommended for production configurations. Groups that rely on labels may not be fully applied during processing.

### ArticlesArticlesItemsRestrictions

Optional restrictions that control who can purchase the article.

- `minimum_age` (integer, optional) — Minimum customer age required to purchase the article.

### ArticlesArticlesItemsDiscount

- `discountQuantity` (integer, required) — The quantity of the article in question that must be sold on one receipt to trigger volume discount.
- `discountCode` (integer, required) — Defines whether the amount in discountAmount (see the following) contains discount or n-unit price. Furthermore, you can indicate whether discount must be calculated based on quantity registered with the POS's multiply \<X> key or based on quantity of individual units of the article (each scanning/entry counts for one).Based on reqistered article quantity0 = discountAmount contains discount1 = discountAmount contains n-unit price2 = discountAmount contains discount percentage3 = discountAmount contains pay percentage for cheapestBased on quantity in unit of measure (kg, liters, meters, etc.)4 = discountAmount contains discount5 = discountAmount contains n-unit price6 = discountAmount contains discount percentage7 = discountAmount contains pay percentage for cheapestThe variants 4, 5, and 6 are relevant for articles, where number covers weight, length, etc., rather than number of units, especially for weight-variable scanner labels. Example: articleId: 260001 (weight-variable article) articleTextReceipt: kilo minced meat price : 50,00 (price per kilo) numberOfDecimals: 3 (position of comma in scanner label) discountQuantity: 1 ) Typical discount setup for discountCode : 5 ) similar packs. discountAmount: 3,00 ) 1 pack for 3 EUR regardless of previous price discountQuantity: 1 ) Discount code 1 will mean that discount discountCode : 1 ) only applies when you've sold discountAmount: 3,00 ) 1 kilo, that is 1 kilo for 3 EUR. Note that the variants 4 and 5 may cause unwanted behavior when used on common articles, because discount triggering is then controlled by the number of registrations rather than the number of units (3 x milk will discount-wise count as 1). When using discount codes 4 and 5, gross profit is calculated in the same way as when using discount codes 0 and 1 respectively. Discount code 3 is used to define a variable discount, that is a discount that's calculated based on the cheapest article in the specified number.
- `discountAmount` (double, optional) — Impact depends on discountCode:Discount codes 0 & 4: Discount amount when selling discountQuantity units of the aticle.Discount codes 1 & 5: Total price for discountQuantity units of the article. Allows x EUR regardless of previous price (typically for weight-variable articles).Discount codes 2 & 6: Discount percentage when selling discountQuantity units of the article.
- `discountPercentage` (integer, optional) — The discount percentage that's given when selling the article. = -1 Group discount. Current discount rate is fetched from article group. = 0 No discount, regardless of specified group discount.> 0 The discount that must be triggered, regardless of what's specified as group discount (5% is specified as 500).
- `discountInSets` (enum, optional) — Defines if the discount should only be triggered when discountQuantity quantity of articles is reached.\<ul>\<li>0 = Minimum buy, discount is triggered for all articles when required quantity is reached.\</li>\<li>1 = Set-wise, discount is triggered for multiplums of discountQuantity\</li>\</ul>\<p>Example: discountQuantity is three and four articles are sold. \<ul>\<li>discountInSets = 0, discount is given for all four articles.\</li>\<li> discountInSets=1, discount is only given for three articles.\</ul>\</li>\</p>
  - Allowed values: `0`, `1`
- `discountMaximum` (integer, optional) — The maximum quantity of the article in question that can be sold on one receipt at the current discount price. When the maximum is exceeded, additional articles are sold with no discount.
- `clubId` (integer, optional) — If discount must only apply to members of a particular club, specify the required club number here. Specify zero to give the discount to all customers.

### ArticlesArticlesItemsImagesItems

- `imageId` (string, required) — Identifier of the image linked to this article. Must be a 32-character lowercase MD5 hash.
- `isDefault` (enum, optional) — Indicates if this is the default image for the article. Only one image can have isDefault set to 1.
  - Allowed values: `0`, `1`

### ArticlesArticlesItemsFoodAndBeverage

- `isAddition` (enum, optional)
  - Allowed values: `0`, `1`
- `articleType` (integer, optional) — Defines article type for control of run/wait in kitchen productions.0 = Ordinary articles that run automatically1 = Starter2 = Main course3 = Dessert
- `isIngredient` (enum, optional) — Defines if the article in question is an ingredient that is used in the production of other articles. 0 = No, the article is not an ingredient1 = Yes, the article is an ingredient
  - Allowed values: `0`, `1`

### ArticlesArticlesItemsReorder

Only used if 52ViKING handles reordering. Ask your Fiftytwo consultant if you're in doubt.

- `orderingId` (integer, optional) — Article number in supplier's system.
- `manufacturer` (integer, optional) — Manufacturer or similar information for statistical purposes. In principle for general use. May be used for selection and grouping.
- `supplierId` (integer, optional) — The ID of the supplier. There is currently no supplier management endpoint.
- `minimumStock` (integer, optional) — Used for creating order proposals, so that articles that are low in stock are automatically included in the order proposal. If the field is 0, the article is not included in order proposals. Voucher articles: Used for automatic reordering. If stock is lower than the specified value, the system will automatically reorder up to the specified maximum. 0 = no automatic reordering.
- `maximumStock` (integer, optional) — Used for creating order proposals, so that articles that are low in stock will automatically be ordered up to the specified maximum value, rounded according to packet size. If the field is 0, the article isn't included in order proposals. Voucher articles: Used for automatic reordering, so that articles are always ordered up to the MaximumStock value, with a minimum of one unit. If stock is higher than the specified maximum value, stock in excess of the maximum is returned. If maximum is 0, all stock is returned.
- `unitsPerPackage` (double, optional) — Defines the number of units (as defined in shelflabel.salesUnit) per packet ordered.
- `minimumOrderQuantity` (double, optional) — Defines the minimum number of units (as defined in shelflabel.salesUnit) that can be ordered.

### ArticlesArticlesItemsControl

- `disableFromExtendedDiscounts` (enum, optional) — Defines if the article in question should be excluded from calculation of discounts via discount groups.0 = No, don't exclude it. The article is handled according to the rules in the discount groups1 = Yes, exclude it. The article mustn't be included in calculation of discount group discounts
  - Allowed values: `0`, `1`
- `manualDiscountNotAllowed` (enum, optional) — Defines if manual discount can be given on the article in question.0 = Manual discount can be given1 = Manual discount must not be given
  - Allowed values: `0`, `1`
- `priceChangeNotAllowed` (enum, optional) — Defines if it should be possible to change prices and related fields in VA01 on the server.0 = The article's price can be changed1 = The article's price can not be changed
  - Allowed values: `0`, `1`
- `blockCashierPriceChange` (enum, optional) — Defines if it's possible to change the article's price in connection with sales on a POS.0 = The article's price can be changed1 = The article's price can't be changed
  - Allowed values: `0`, `1`
- `enableOrderChangeNotification` (enum, optional) — Defines if a notification must be generated if the quantity of the article on a customer's purchase order is changed. This setting is primarily relevant for distance selling, where the customer can automatically get an e-mail notification.0 = Send notification1 = Don't send notificationOnly applicable if the order module is enabled
  - Allowed values: `0`, `1`
- `shelfLabelPrint` (enum, optional) — Set to 1 to enable generation of shelf labels, physical as well as electronic ones. See also the shelfLabel endpoint.
  - Allowed values: `0`, `1`
- `stockPrinterNumber` (integer, optional) — Relevant if you use stock room printers, kitchen printers, or similar. Defines which printer to print article information on. 0 = No printing.
- `manageStock` (enum, optional) — Defines if stock control must be performed on the article in question.0 = No1 = Yes
  - Allowed values: `0`, `1`

### ArticlesArticlesItemsBarcodesItems

- `barcode` (integer, required) — Article barcode with an articleId that can be constructed based on the following principles:EAN-14EAN-13EAN-8UPCPLU numbersPLUS numbersArticle group or department numbersOwn article numbersSee also the articleId parameter.
- `quantity` (integer, required) — The quantity of the specified articleId that's sold when the barcode is scanned.

### ArticlesArticlesItemsShelfLabel

You can specify shelf-edge label settings for the article. Depending on the setup of your shelf-edge label system, shelf-edge labels will then be printed, marked for printing, or updated (if you use electronic shelf labels, ESLs) when you change article information, such as price, name, etc. Ask your Fiftytwo consultant if you're in doubt.

- `labelText1` (string, optional) — Primary line of text on the shelf-edge label. Keep your text short and descriptive. Many shelf-edge labels are only able to display a limited number of characters. Ask your Fiftytwo consultant if you're in doubt.
- `labelText2` (string, optional) — Optional secondary line of text on the shelf-edge label.
- `labelText3` (string, optional) — Optional further line of text on the shelf-edge label.
- `labelText4` (string, optional) — Optional further line of text on the shelf-edge label.
- `origin` (string, optional) — Ability to specify article's country of origin.
- `classification` (string, optional) — Ability to specify an article classification.
- `salesUnit` (ArticlesArticlesItemsShelfLabelSalesUnit, optional)
- `baseUnit1` (string, optional)
- `baseUnit2` (string, optional)
- `print` (ArticlesArticlesItemsShelfLabelPrint, optional)
- `material` (integer, optional)
- `color` (integer, optional)
- `size` (integer, optional)

### ArticlesArticlesItemsArticleLabelsItems

- `label` (string, required) — Label Text. Must be 1–30 chars, printable ASCII only, no spaces.

### ArticlesArticlesItemsShelfLabelSalesUnit

- `content` (double, required) — Specify the article's content quantity (only the number, not the unit). Examples: For an article that contains 1 kg, specify 1. For a package that contains 24 cans of the article, specify 24.
- `unit` (string, required) — Specify the unit that's used to describe the article's content quantity. Examples: For an article that contains 1 kg, specify kg. For a package that contains 24 cans of the article, specify cans.

### ArticlesArticlesItemsShelfLabelPrint

- `labelType` (integer, optional) — Select number that represents the required type of shelf label (your organization may have specified different types of shelf labels, for example small, large, special offer, etc.).
- `labelCopies` (integer, optional) — Specify number of shelf labels to generate. Primarily relevant for printed shelf labels.
- `signType` (integer, optional) — If defined in label.par, 52ViKING can also create printed signs about the article. Specify number that represents required sign type. Specify 00 for no sign.
- `signCopies` (integer, optional) — Number of signs to print if you've specified signType.

## Examples

**Request**

```json
{
  "articles": [
    {
      "articleId": 200001,
      "articleTextReceipt": "Price variable article.",
      "articleSupplementaryText": "Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
      "entryCode": "P",
      "price": 0,
      "repeatAllowed": 0,
      "articleLabels": [
        {
          "label": "PRICEVAR"
        }
      ]
    },
    {
      "articleId": 210001,
      "articleTextReceipt": "Price variable conversion.",
      "articleSupplementaryText": "Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
      "numberOfDecimals": 2,
      "entryCode": "P",
      "price": 10,
      "repeatAllowed": 0,
      "articleLabels": [
        {
          "label": "PRICECONV"
        }
      ]
    },
    {
      "articleId": 250001,
      "articleTextReceipt": "Weight variable article.",
      "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.",
      "numberOfDecimals": 3,
      "entryCode": "E",
      "price": 20,
      "repeatAllowed": 0,
      "packageOrUnitPrice": 0,
      "articleLabels": [
        {
          "label": "WEIGHTUNIT"
        }
      ]
    },
    {
      "articleId": 260001,
      "articleTextReceipt": "Weight variable article.",
      "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.",
      "numberOfDecimals": 3,
      "entryCode": "E",
      "price": 20,
      "repeatAllowed": 0,
      "packageOrUnitPrice": 1,
      "articleLabels": [
        {
          "label": "WEIGHTPACK"
        }
      ]
    },
    {
      "articleId": 16,
      "articleTextReceipt": "Article 16.",
      "articleSupplementaryText": "Supplementary test",
      "articleSupplementaryTextType": 1,
      "articleFamilyId": 0,
      "articleGroupId": 10,
      "category": 11,
      "assortment": 12,
      "statisticsCode": 13,
      "vatCode": 1,
      "numberOfDecimals": 0,
      "entryCode": "E",
      "staffDiscountCode": 1,
      "additionalTextSegment": 8000,
      "costPrice": 10,
      "price": 10,
      "multiplyAllowed": 1,
      "repeatAllowed": 1,
      "erpArticleId": 111111,
      "packageOrUnitPrice": 0,
      "totalDiscountFlag": 1,
      "salesRule": 0,
      "voucherProvider": 0,
      "applyNegativePrice": 0,
      "additionInformation": 0,
      "statisticsCode1": 0,
      "statisticsCode2": 0,
      "linkedArticle": 0,
      "savingStampsEnabled": 0,
      "indicativePrice": 15.12,
      "assortment1": 0,
      "assortment2": 0,
      "salesGroupId": 0,
      "restrictions": {
        "minimum_age": 18
      },
      "displayGroup": 0,
      "PLC": 99,
      "discount": {
        "discountQuantity": 5,
        "discountCode": 1,
        "discountAmount": 10,
        "discountPercentage": 0,
        "discountInSets": 1,
        "discountMaximum": 20,
        "clubId": 5
      },
      "foodAndBeverage": {
        "isAddition": 0,
        "articleType": 0,
        "isIngredient": 0
      },
      "reorder": {
        "orderingId": 12345678901,
        "manufacturer": 0,
        "supplierId": 123456789012,
        "minimumStock": 1,
        "maximumStock": 2,
        "unitsPerPackage": 6,
        "minimumOrderQuantity": 3
      },
      "control": {
        "disableFromExtendedDiscounts": 0,
        "manualDiscountNotAllowed": 0,
        "priceChangeNotAllowed": 0,
        "blockCashierPriceChange": 0,
        "enableOrderChangeNotification": 0,
        "shelfLabelPrint": 0,
        "stockPrinterNumber": 0,
        "manageStock": 0
      },
      "barcodes": [
        {
          "barcode": 2008,
          "quantity": 3
        },
        {
          "barcode": 2010,
          "quantity": 2
        }
      ],
      "shelfLabel": {
        "labelText1": "MIDD.TALL., BL�",
        "labelText2": "NOORA",
        "labelText3": "",
        "labelText4": "",
        "origin": "",
        "classification": "",
        "salesUnit": {
          "content": 10,
          "unit": "cm"
        },
        "baseUnit1": "m",
        "baseUnit2": "mm",
        "print": {
          "labelType": 1,
          "labelCopies": 1,
          "signType": 1,
          "signCopies": 1
        },
        "material": 1,
        "color": 1,
        "size": 1
      },
      "variantIds": [
        201,
        202
      ],
      "modifierIds": [
        301,
        302
      ],
      "specificationIds": [
        401
      ]
    }
  ]
}
```

**Response**

```json
{}
```

**SDK Code**

```python Articles_EC_example
import requests

url = "https://api.fiftytwo.com/masterdata/articles/v1/chain/1"

payload = { "articles": [
        {
            "articleId": 200001,
            "articleTextReceipt": "Price variable article.",
            "articleSupplementaryText": "Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
            "entryCode": "P",
            "price": 0,
            "repeatAllowed": 0,
            "articleLabels": [{ "label": "PRICEVAR" }]
        },
        {
            "articleId": 210001,
            "articleTextReceipt": "Price variable conversion.",
            "articleSupplementaryText": "Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
            "numberOfDecimals": 2,
            "entryCode": "P",
            "price": 10,
            "repeatAllowed": 0,
            "articleLabels": [{ "label": "PRICECONV" }]
        },
        {
            "articleId": 250001,
            "articleTextReceipt": "Weight variable article.",
            "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.",
            "numberOfDecimals": 3,
            "entryCode": "E",
            "price": 20,
            "repeatAllowed": 0,
            "packageOrUnitPrice": 0,
            "articleLabels": [{ "label": "WEIGHTUNIT" }]
        },
        {
            "articleId": 260001,
            "articleTextReceipt": "Weight variable article.",
            "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.",
            "numberOfDecimals": 3,
            "entryCode": "E",
            "price": 20,
            "repeatAllowed": 0,
            "packageOrUnitPrice": 1,
            "articleLabels": [{ "label": "WEIGHTPACK" }]
        },
        {
            "articleId": 16,
            "articleTextReceipt": "Article 16.",
            "articleSupplementaryText": "Supplementary test",
            "articleSupplementaryTextType": 1,
            "articleFamilyId": 0,
            "articleGroupId": 10,
            "category": 11,
            "assortment": 12,
            "statisticsCode": 13,
            "vatCode": 1,
            "numberOfDecimals": 0,
            "entryCode": "E",
            "staffDiscountCode": 1,
            "additionalTextSegment": 8000,
            "costPrice": 10,
            "price": 10,
            "multiplyAllowed": 1,
            "repeatAllowed": 1,
            "erpArticleId": 111111,
            "packageOrUnitPrice": 0,
            "totalDiscountFlag": 1,
            "salesRule": 0,
            "voucherProvider": 0,
            "applyNegativePrice": 0,
            "additionInformation": 0,
            "statisticsCode1": 0,
            "statisticsCode2": 0,
            "linkedArticle": 0,
            "savingStampsEnabled": 0,
            "indicativePrice": 15.12,
            "assortment1": 0,
            "assortment2": 0,
            "salesGroupId": 0,
            "restrictions": { "minimum_age": 18 },
            "displayGroup": 0,
            "PLC": 99,
            "discount": {
                "discountQuantity": 5,
                "discountCode": 1,
                "discountAmount": 10,
                "discountPercentage": 0,
                "discountInSets": 1,
                "discountMaximum": 20,
                "clubId": 5
            },
            "foodAndBeverage": {
                "isAddition": 0,
                "articleType": 0,
                "isIngredient": 0
            },
            "reorder": {
                "orderingId": 12345678901,
                "manufacturer": 0,
                "supplierId": 123456789012,
                "minimumStock": 1,
                "maximumStock": 2,
                "unitsPerPackage": 6,
                "minimumOrderQuantity": 3
            },
            "control": {
                "disableFromExtendedDiscounts": 0,
                "manualDiscountNotAllowed": 0,
                "priceChangeNotAllowed": 0,
                "blockCashierPriceChange": 0,
                "enableOrderChangeNotification": 0,
                "shelfLabelPrint": 0,
                "stockPrinterNumber": 0,
                "manageStock": 0
            },
            "barcodes": [
                {
                    "barcode": 2008,
                    "quantity": 3
                },
                {
                    "barcode": 2010,
                    "quantity": 2
                }
            ],
            "shelfLabel": {
                "labelText1": "MIDD.TALL., BL�",
                "labelText2": "NOORA",
                "labelText3": "",
                "labelText4": "",
                "origin": "",
                "classification": "",
                "salesUnit": {
                    "content": 10,
                    "unit": "cm"
                },
                "baseUnit1": "m",
                "baseUnit2": "mm",
                "print": {
                    "labelType": 1,
                    "labelCopies": 1,
                    "signType": 1,
                    "signCopies": 1
                },
                "material": 1,
                "color": 1,
                "size": 1
            },
            "variantIds": [201, 202],
            "modifierIds": [301, 302],
            "specificationIds": [401]
        }
    ] }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Articles_EC_example
const url = 'https://api.fiftytwo.com/masterdata/articles/v1/chain/1';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"articles":[{"articleId":200001,"articleTextReceipt":"Price variable article.","articleSupplementaryText":"Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.","entryCode":"P","price":0,"repeatAllowed":0,"articleLabels":[{"label":"PRICEVAR"}]},{"articleId":210001,"articleTextReceipt":"Price variable conversion.","articleSupplementaryText":"Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.","numberOfDecimals":2,"entryCode":"P","price":10,"repeatAllowed":0,"articleLabels":[{"label":"PRICECONV"}]},{"articleId":250001,"articleTextReceipt":"Weight variable article.","articleSupplementaryText":"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.","numberOfDecimals":3,"entryCode":"E","price":20,"repeatAllowed":0,"packageOrUnitPrice":0,"articleLabels":[{"label":"WEIGHTUNIT"}]},{"articleId":260001,"articleTextReceipt":"Weight variable article.","articleSupplementaryText":"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.","numberOfDecimals":3,"entryCode":"E","price":20,"repeatAllowed":0,"packageOrUnitPrice":1,"articleLabels":[{"label":"WEIGHTPACK"}]},{"articleId":16,"articleTextReceipt":"Article 16.","articleSupplementaryText":"Supplementary test","articleSupplementaryTextType":1,"articleFamilyId":0,"articleGroupId":10,"category":11,"assortment":12,"statisticsCode":13,"vatCode":1,"numberOfDecimals":0,"entryCode":"E","staffDiscountCode":1,"additionalTextSegment":8000,"costPrice":10,"price":10,"multiplyAllowed":1,"repeatAllowed":1,"erpArticleId":111111,"packageOrUnitPrice":0,"totalDiscountFlag":1,"salesRule":0,"voucherProvider":0,"applyNegativePrice":0,"additionInformation":0,"statisticsCode1":0,"statisticsCode2":0,"linkedArticle":0,"savingStampsEnabled":0,"indicativePrice":15.12,"assortment1":0,"assortment2":0,"salesGroupId":0,"restrictions":{"minimum_age":18},"displayGroup":0,"PLC":99,"discount":{"discountQuantity":5,"discountCode":1,"discountAmount":10,"discountPercentage":0,"discountInSets":1,"discountMaximum":20,"clubId":5},"foodAndBeverage":{"isAddition":0,"articleType":0,"isIngredient":0},"reorder":{"orderingId":12345678901,"manufacturer":0,"supplierId":123456789012,"minimumStock":1,"maximumStock":2,"unitsPerPackage":6,"minimumOrderQuantity":3},"control":{"disableFromExtendedDiscounts":0,"manualDiscountNotAllowed":0,"priceChangeNotAllowed":0,"blockCashierPriceChange":0,"enableOrderChangeNotification":0,"shelfLabelPrint":0,"stockPrinterNumber":0,"manageStock":0},"barcodes":[{"barcode":2008,"quantity":3},{"barcode":2010,"quantity":2}],"shelfLabel":{"labelText1":"MIDD.TALL., BL�","labelText2":"NOORA","labelText3":"","labelText4":"","origin":"","classification":"","salesUnit":{"content":10,"unit":"cm"},"baseUnit1":"m","baseUnit2":"mm","print":{"labelType":1,"labelCopies":1,"signType":1,"signCopies":1},"material":1,"color":1,"size":1},"variantIds":[201,202],"modifierIds":[301,302],"specificationIds":[401]}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Articles_EC_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.fiftytwo.com/masterdata/articles/v1/chain/1"

	payload := strings.NewReader("{\n  \"articles\": [\n    {\n      \"articleId\": 200001,\n      \"articleTextReceipt\": \"Price variable article.\",\n      \"articleSupplementaryText\": \"Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"entryCode\": \"P\",\n      \"price\": 0,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICEVAR\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 210001,\n      \"articleTextReceipt\": \"Price variable conversion.\",\n      \"articleSupplementaryText\": \"Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"numberOfDecimals\": 2,\n      \"entryCode\": \"P\",\n      \"price\": 10,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICECONV\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 250001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTUNIT\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 260001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 1,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTPACK\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 16,\n      \"articleTextReceipt\": \"Article 16.\",\n      \"articleSupplementaryText\": \"Supplementary test\",\n      \"articleSupplementaryTextType\": 1,\n      \"articleFamilyId\": 0,\n      \"articleGroupId\": 10,\n      \"category\": 11,\n      \"assortment\": 12,\n      \"statisticsCode\": 13,\n      \"vatCode\": 1,\n      \"numberOfDecimals\": 0,\n      \"entryCode\": \"E\",\n      \"staffDiscountCode\": 1,\n      \"additionalTextSegment\": 8000,\n      \"costPrice\": 10,\n      \"price\": 10,\n      \"multiplyAllowed\": 1,\n      \"repeatAllowed\": 1,\n      \"erpArticleId\": 111111,\n      \"packageOrUnitPrice\": 0,\n      \"totalDiscountFlag\": 1,\n      \"salesRule\": 0,\n      \"voucherProvider\": 0,\n      \"applyNegativePrice\": 0,\n      \"additionInformation\": 0,\n      \"statisticsCode1\": 0,\n      \"statisticsCode2\": 0,\n      \"linkedArticle\": 0,\n      \"savingStampsEnabled\": 0,\n      \"indicativePrice\": 15.12,\n      \"assortment1\": 0,\n      \"assortment2\": 0,\n      \"salesGroupId\": 0,\n      \"restrictions\": {\n        \"minimum_age\": 18\n      },\n      \"displayGroup\": 0,\n      \"PLC\": 99,\n      \"discount\": {\n        \"discountQuantity\": 5,\n        \"discountCode\": 1,\n        \"discountAmount\": 10,\n        \"discountPercentage\": 0,\n        \"discountInSets\": 1,\n        \"discountMaximum\": 20,\n        \"clubId\": 5\n      },\n      \"foodAndBeverage\": {\n        \"isAddition\": 0,\n        \"articleType\": 0,\n        \"isIngredient\": 0\n      },\n      \"reorder\": {\n        \"orderingId\": 12345678901,\n        \"manufacturer\": 0,\n        \"supplierId\": 123456789012,\n        \"minimumStock\": 1,\n        \"maximumStock\": 2,\n        \"unitsPerPackage\": 6,\n        \"minimumOrderQuantity\": 3\n      },\n      \"control\": {\n        \"disableFromExtendedDiscounts\": 0,\n        \"manualDiscountNotAllowed\": 0,\n        \"priceChangeNotAllowed\": 0,\n        \"blockCashierPriceChange\": 0,\n        \"enableOrderChangeNotification\": 0,\n        \"shelfLabelPrint\": 0,\n        \"stockPrinterNumber\": 0,\n        \"manageStock\": 0\n      },\n      \"barcodes\": [\n        {\n          \"barcode\": 2008,\n          \"quantity\": 3\n        },\n        {\n          \"barcode\": 2010,\n          \"quantity\": 2\n        }\n      ],\n      \"shelfLabel\": {\n        \"labelText1\": \"MIDD.TALL., BL�\",\n        \"labelText2\": \"NOORA\",\n        \"labelText3\": \"\",\n        \"labelText4\": \"\",\n        \"origin\": \"\",\n        \"classification\": \"\",\n        \"salesUnit\": {\n          \"content\": 10,\n          \"unit\": \"cm\"\n        },\n        \"baseUnit1\": \"m\",\n        \"baseUnit2\": \"mm\",\n        \"print\": {\n          \"labelType\": 1,\n          \"labelCopies\": 1,\n          \"signType\": 1,\n          \"signCopies\": 1\n        },\n        \"material\": 1,\n        \"color\": 1,\n        \"size\": 1\n      },\n      \"variantIds\": [\n        201,\n        202\n      ],\n      \"modifierIds\": [\n        301,\n        302\n      ],\n      \"specificationIds\": [\n        401\n      ]\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Articles_EC_example
require 'uri'
require 'net/http'

url = URI("https://api.fiftytwo.com/masterdata/articles/v1/chain/1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"articles\": [\n    {\n      \"articleId\": 200001,\n      \"articleTextReceipt\": \"Price variable article.\",\n      \"articleSupplementaryText\": \"Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"entryCode\": \"P\",\n      \"price\": 0,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICEVAR\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 210001,\n      \"articleTextReceipt\": \"Price variable conversion.\",\n      \"articleSupplementaryText\": \"Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"numberOfDecimals\": 2,\n      \"entryCode\": \"P\",\n      \"price\": 10,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICECONV\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 250001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTUNIT\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 260001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 1,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTPACK\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 16,\n      \"articleTextReceipt\": \"Article 16.\",\n      \"articleSupplementaryText\": \"Supplementary test\",\n      \"articleSupplementaryTextType\": 1,\n      \"articleFamilyId\": 0,\n      \"articleGroupId\": 10,\n      \"category\": 11,\n      \"assortment\": 12,\n      \"statisticsCode\": 13,\n      \"vatCode\": 1,\n      \"numberOfDecimals\": 0,\n      \"entryCode\": \"E\",\n      \"staffDiscountCode\": 1,\n      \"additionalTextSegment\": 8000,\n      \"costPrice\": 10,\n      \"price\": 10,\n      \"multiplyAllowed\": 1,\n      \"repeatAllowed\": 1,\n      \"erpArticleId\": 111111,\n      \"packageOrUnitPrice\": 0,\n      \"totalDiscountFlag\": 1,\n      \"salesRule\": 0,\n      \"voucherProvider\": 0,\n      \"applyNegativePrice\": 0,\n      \"additionInformation\": 0,\n      \"statisticsCode1\": 0,\n      \"statisticsCode2\": 0,\n      \"linkedArticle\": 0,\n      \"savingStampsEnabled\": 0,\n      \"indicativePrice\": 15.12,\n      \"assortment1\": 0,\n      \"assortment2\": 0,\n      \"salesGroupId\": 0,\n      \"restrictions\": {\n        \"minimum_age\": 18\n      },\n      \"displayGroup\": 0,\n      \"PLC\": 99,\n      \"discount\": {\n        \"discountQuantity\": 5,\n        \"discountCode\": 1,\n        \"discountAmount\": 10,\n        \"discountPercentage\": 0,\n        \"discountInSets\": 1,\n        \"discountMaximum\": 20,\n        \"clubId\": 5\n      },\n      \"foodAndBeverage\": {\n        \"isAddition\": 0,\n        \"articleType\": 0,\n        \"isIngredient\": 0\n      },\n      \"reorder\": {\n        \"orderingId\": 12345678901,\n        \"manufacturer\": 0,\n        \"supplierId\": 123456789012,\n        \"minimumStock\": 1,\n        \"maximumStock\": 2,\n        \"unitsPerPackage\": 6,\n        \"minimumOrderQuantity\": 3\n      },\n      \"control\": {\n        \"disableFromExtendedDiscounts\": 0,\n        \"manualDiscountNotAllowed\": 0,\n        \"priceChangeNotAllowed\": 0,\n        \"blockCashierPriceChange\": 0,\n        \"enableOrderChangeNotification\": 0,\n        \"shelfLabelPrint\": 0,\n        \"stockPrinterNumber\": 0,\n        \"manageStock\": 0\n      },\n      \"barcodes\": [\n        {\n          \"barcode\": 2008,\n          \"quantity\": 3\n        },\n        {\n          \"barcode\": 2010,\n          \"quantity\": 2\n        }\n      ],\n      \"shelfLabel\": {\n        \"labelText1\": \"MIDD.TALL., BL�\",\n        \"labelText2\": \"NOORA\",\n        \"labelText3\": \"\",\n        \"labelText4\": \"\",\n        \"origin\": \"\",\n        \"classification\": \"\",\n        \"salesUnit\": {\n          \"content\": 10,\n          \"unit\": \"cm\"\n        },\n        \"baseUnit1\": \"m\",\n        \"baseUnit2\": \"mm\",\n        \"print\": {\n          \"labelType\": 1,\n          \"labelCopies\": 1,\n          \"signType\": 1,\n          \"signCopies\": 1\n        },\n        \"material\": 1,\n        \"color\": 1,\n        \"size\": 1\n      },\n      \"variantIds\": [\n        201,\n        202\n      ],\n      \"modifierIds\": [\n        301,\n        302\n      ],\n      \"specificationIds\": [\n        401\n      ]\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

```java Articles_EC_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.fiftytwo.com/masterdata/articles/v1/chain/1")
  .header("Content-Type", "application/json")
  .body("{\n  \"articles\": [\n    {\n      \"articleId\": 200001,\n      \"articleTextReceipt\": \"Price variable article.\",\n      \"articleSupplementaryText\": \"Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"entryCode\": \"P\",\n      \"price\": 0,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICEVAR\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 210001,\n      \"articleTextReceipt\": \"Price variable conversion.\",\n      \"articleSupplementaryText\": \"Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"numberOfDecimals\": 2,\n      \"entryCode\": \"P\",\n      \"price\": 10,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICECONV\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 250001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTUNIT\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 260001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 1,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTPACK\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 16,\n      \"articleTextReceipt\": \"Article 16.\",\n      \"articleSupplementaryText\": \"Supplementary test\",\n      \"articleSupplementaryTextType\": 1,\n      \"articleFamilyId\": 0,\n      \"articleGroupId\": 10,\n      \"category\": 11,\n      \"assortment\": 12,\n      \"statisticsCode\": 13,\n      \"vatCode\": 1,\n      \"numberOfDecimals\": 0,\n      \"entryCode\": \"E\",\n      \"staffDiscountCode\": 1,\n      \"additionalTextSegment\": 8000,\n      \"costPrice\": 10,\n      \"price\": 10,\n      \"multiplyAllowed\": 1,\n      \"repeatAllowed\": 1,\n      \"erpArticleId\": 111111,\n      \"packageOrUnitPrice\": 0,\n      \"totalDiscountFlag\": 1,\n      \"salesRule\": 0,\n      \"voucherProvider\": 0,\n      \"applyNegativePrice\": 0,\n      \"additionInformation\": 0,\n      \"statisticsCode1\": 0,\n      \"statisticsCode2\": 0,\n      \"linkedArticle\": 0,\n      \"savingStampsEnabled\": 0,\n      \"indicativePrice\": 15.12,\n      \"assortment1\": 0,\n      \"assortment2\": 0,\n      \"salesGroupId\": 0,\n      \"restrictions\": {\n        \"minimum_age\": 18\n      },\n      \"displayGroup\": 0,\n      \"PLC\": 99,\n      \"discount\": {\n        \"discountQuantity\": 5,\n        \"discountCode\": 1,\n        \"discountAmount\": 10,\n        \"discountPercentage\": 0,\n        \"discountInSets\": 1,\n        \"discountMaximum\": 20,\n        \"clubId\": 5\n      },\n      \"foodAndBeverage\": {\n        \"isAddition\": 0,\n        \"articleType\": 0,\n        \"isIngredient\": 0\n      },\n      \"reorder\": {\n        \"orderingId\": 12345678901,\n        \"manufacturer\": 0,\n        \"supplierId\": 123456789012,\n        \"minimumStock\": 1,\n        \"maximumStock\": 2,\n        \"unitsPerPackage\": 6,\n        \"minimumOrderQuantity\": 3\n      },\n      \"control\": {\n        \"disableFromExtendedDiscounts\": 0,\n        \"manualDiscountNotAllowed\": 0,\n        \"priceChangeNotAllowed\": 0,\n        \"blockCashierPriceChange\": 0,\n        \"enableOrderChangeNotification\": 0,\n        \"shelfLabelPrint\": 0,\n        \"stockPrinterNumber\": 0,\n        \"manageStock\": 0\n      },\n      \"barcodes\": [\n        {\n          \"barcode\": 2008,\n          \"quantity\": 3\n        },\n        {\n          \"barcode\": 2010,\n          \"quantity\": 2\n        }\n      ],\n      \"shelfLabel\": {\n        \"labelText1\": \"MIDD.TALL., BL�\",\n        \"labelText2\": \"NOORA\",\n        \"labelText3\": \"\",\n        \"labelText4\": \"\",\n        \"origin\": \"\",\n        \"classification\": \"\",\n        \"salesUnit\": {\n          \"content\": 10,\n          \"unit\": \"cm\"\n        },\n        \"baseUnit1\": \"m\",\n        \"baseUnit2\": \"mm\",\n        \"print\": {\n          \"labelType\": 1,\n          \"labelCopies\": 1,\n          \"signType\": 1,\n          \"signCopies\": 1\n        },\n        \"material\": 1,\n        \"color\": 1,\n        \"size\": 1\n      },\n      \"variantIds\": [\n        201,\n        202\n      ],\n      \"modifierIds\": [\n        301,\n        302\n      ],\n      \"specificationIds\": [\n        401\n      ]\n    }\n  ]\n}")
  .asString();
```

```php Articles_EC_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.fiftytwo.com/masterdata/articles/v1/chain/1', [
  'body' => '{
  "articles": [
    {
      "articleId": 200001,
      "articleTextReceipt": "Price variable article.",
      "articleSupplementaryText": "Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
      "entryCode": "P",
      "price": 0,
      "repeatAllowed": 0,
      "articleLabels": [
        {
          "label": "PRICEVAR"
        }
      ]
    },
    {
      "articleId": 210001,
      "articleTextReceipt": "Price variable conversion.",
      "articleSupplementaryText": "Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
      "numberOfDecimals": 2,
      "entryCode": "P",
      "price": 10,
      "repeatAllowed": 0,
      "articleLabels": [
        {
          "label": "PRICECONV"
        }
      ]
    },
    {
      "articleId": 250001,
      "articleTextReceipt": "Weight variable article.",
      "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.",
      "numberOfDecimals": 3,
      "entryCode": "E",
      "price": 20,
      "repeatAllowed": 0,
      "packageOrUnitPrice": 0,
      "articleLabels": [
        {
          "label": "WEIGHTUNIT"
        }
      ]
    },
    {
      "articleId": 260001,
      "articleTextReceipt": "Weight variable article.",
      "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.",
      "numberOfDecimals": 3,
      "entryCode": "E",
      "price": 20,
      "repeatAllowed": 0,
      "packageOrUnitPrice": 1,
      "articleLabels": [
        {
          "label": "WEIGHTPACK"
        }
      ]
    },
    {
      "articleId": 16,
      "articleTextReceipt": "Article 16.",
      "articleSupplementaryText": "Supplementary test",
      "articleSupplementaryTextType": 1,
      "articleFamilyId": 0,
      "articleGroupId": 10,
      "category": 11,
      "assortment": 12,
      "statisticsCode": 13,
      "vatCode": 1,
      "numberOfDecimals": 0,
      "entryCode": "E",
      "staffDiscountCode": 1,
      "additionalTextSegment": 8000,
      "costPrice": 10,
      "price": 10,
      "multiplyAllowed": 1,
      "repeatAllowed": 1,
      "erpArticleId": 111111,
      "packageOrUnitPrice": 0,
      "totalDiscountFlag": 1,
      "salesRule": 0,
      "voucherProvider": 0,
      "applyNegativePrice": 0,
      "additionInformation": 0,
      "statisticsCode1": 0,
      "statisticsCode2": 0,
      "linkedArticle": 0,
      "savingStampsEnabled": 0,
      "indicativePrice": 15.12,
      "assortment1": 0,
      "assortment2": 0,
      "salesGroupId": 0,
      "restrictions": {
        "minimum_age": 18
      },
      "displayGroup": 0,
      "PLC": 99,
      "discount": {
        "discountQuantity": 5,
        "discountCode": 1,
        "discountAmount": 10,
        "discountPercentage": 0,
        "discountInSets": 1,
        "discountMaximum": 20,
        "clubId": 5
      },
      "foodAndBeverage": {
        "isAddition": 0,
        "articleType": 0,
        "isIngredient": 0
      },
      "reorder": {
        "orderingId": 12345678901,
        "manufacturer": 0,
        "supplierId": 123456789012,
        "minimumStock": 1,
        "maximumStock": 2,
        "unitsPerPackage": 6,
        "minimumOrderQuantity": 3
      },
      "control": {
        "disableFromExtendedDiscounts": 0,
        "manualDiscountNotAllowed": 0,
        "priceChangeNotAllowed": 0,
        "blockCashierPriceChange": 0,
        "enableOrderChangeNotification": 0,
        "shelfLabelPrint": 0,
        "stockPrinterNumber": 0,
        "manageStock": 0
      },
      "barcodes": [
        {
          "barcode": 2008,
          "quantity": 3
        },
        {
          "barcode": 2010,
          "quantity": 2
        }
      ],
      "shelfLabel": {
        "labelText1": "MIDD.TALL., BL�",
        "labelText2": "NOORA",
        "labelText3": "",
        "labelText4": "",
        "origin": "",
        "classification": "",
        "salesUnit": {
          "content": 10,
          "unit": "cm"
        },
        "baseUnit1": "m",
        "baseUnit2": "mm",
        "print": {
          "labelType": 1,
          "labelCopies": 1,
          "signType": 1,
          "signCopies": 1
        },
        "material": 1,
        "color": 1,
        "size": 1
      },
      "variantIds": [
        201,
        202
      ],
      "modifierIds": [
        301,
        302
      ],
      "specificationIds": [
        401
      ]
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp Articles_EC_example
using RestSharp;

var client = new RestClient("https://api.fiftytwo.com/masterdata/articles/v1/chain/1");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"articles\": [\n    {\n      \"articleId\": 200001,\n      \"articleTextReceipt\": \"Price variable article.\",\n      \"articleSupplementaryText\": \"Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"entryCode\": \"P\",\n      \"price\": 0,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICEVAR\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 210001,\n      \"articleTextReceipt\": \"Price variable conversion.\",\n      \"articleSupplementaryText\": \"Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.\",\n      \"numberOfDecimals\": 2,\n      \"entryCode\": \"P\",\n      \"price\": 10,\n      \"repeatAllowed\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"PRICECONV\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 250001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 0,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTUNIT\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 260001,\n      \"articleTextReceipt\": \"Weight variable article.\",\n      \"articleSupplementaryText\": \"Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.\",\n      \"numberOfDecimals\": 3,\n      \"entryCode\": \"E\",\n      \"price\": 20,\n      \"repeatAllowed\": 0,\n      \"packageOrUnitPrice\": 1,\n      \"articleLabels\": [\n        {\n          \"label\": \"WEIGHTPACK\"\n        }\n      ]\n    },\n    {\n      \"articleId\": 16,\n      \"articleTextReceipt\": \"Article 16.\",\n      \"articleSupplementaryText\": \"Supplementary test\",\n      \"articleSupplementaryTextType\": 1,\n      \"articleFamilyId\": 0,\n      \"articleGroupId\": 10,\n      \"category\": 11,\n      \"assortment\": 12,\n      \"statisticsCode\": 13,\n      \"vatCode\": 1,\n      \"numberOfDecimals\": 0,\n      \"entryCode\": \"E\",\n      \"staffDiscountCode\": 1,\n      \"additionalTextSegment\": 8000,\n      \"costPrice\": 10,\n      \"price\": 10,\n      \"multiplyAllowed\": 1,\n      \"repeatAllowed\": 1,\n      \"erpArticleId\": 111111,\n      \"packageOrUnitPrice\": 0,\n      \"totalDiscountFlag\": 1,\n      \"salesRule\": 0,\n      \"voucherProvider\": 0,\n      \"applyNegativePrice\": 0,\n      \"additionInformation\": 0,\n      \"statisticsCode1\": 0,\n      \"statisticsCode2\": 0,\n      \"linkedArticle\": 0,\n      \"savingStampsEnabled\": 0,\n      \"indicativePrice\": 15.12,\n      \"assortment1\": 0,\n      \"assortment2\": 0,\n      \"salesGroupId\": 0,\n      \"restrictions\": {\n        \"minimum_age\": 18\n      },\n      \"displayGroup\": 0,\n      \"PLC\": 99,\n      \"discount\": {\n        \"discountQuantity\": 5,\n        \"discountCode\": 1,\n        \"discountAmount\": 10,\n        \"discountPercentage\": 0,\n        \"discountInSets\": 1,\n        \"discountMaximum\": 20,\n        \"clubId\": 5\n      },\n      \"foodAndBeverage\": {\n        \"isAddition\": 0,\n        \"articleType\": 0,\n        \"isIngredient\": 0\n      },\n      \"reorder\": {\n        \"orderingId\": 12345678901,\n        \"manufacturer\": 0,\n        \"supplierId\": 123456789012,\n        \"minimumStock\": 1,\n        \"maximumStock\": 2,\n        \"unitsPerPackage\": 6,\n        \"minimumOrderQuantity\": 3\n      },\n      \"control\": {\n        \"disableFromExtendedDiscounts\": 0,\n        \"manualDiscountNotAllowed\": 0,\n        \"priceChangeNotAllowed\": 0,\n        \"blockCashierPriceChange\": 0,\n        \"enableOrderChangeNotification\": 0,\n        \"shelfLabelPrint\": 0,\n        \"stockPrinterNumber\": 0,\n        \"manageStock\": 0\n      },\n      \"barcodes\": [\n        {\n          \"barcode\": 2008,\n          \"quantity\": 3\n        },\n        {\n          \"barcode\": 2010,\n          \"quantity\": 2\n        }\n      ],\n      \"shelfLabel\": {\n        \"labelText1\": \"MIDD.TALL., BL�\",\n        \"labelText2\": \"NOORA\",\n        \"labelText3\": \"\",\n        \"labelText4\": \"\",\n        \"origin\": \"\",\n        \"classification\": \"\",\n        \"salesUnit\": {\n          \"content\": 10,\n          \"unit\": \"cm\"\n        },\n        \"baseUnit1\": \"m\",\n        \"baseUnit2\": \"mm\",\n        \"print\": {\n          \"labelType\": 1,\n          \"labelCopies\": 1,\n          \"signType\": 1,\n          \"signCopies\": 1\n        },\n        \"material\": 1,\n        \"color\": 1,\n        \"size\": 1\n      },\n      \"variantIds\": [\n        201,\n        202\n      ],\n      \"modifierIds\": [\n        301,\n        302\n      ],\n      \"specificationIds\": [\n        401\n      ]\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Articles_EC_example
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["articles": [
    [
      "articleId": 200001,
      "articleTextReceipt": "Price variable article.",
      "articleSupplementaryText": "Packageprice in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
      "entryCode": "P",
      "price": 0,
      "repeatAllowed": 0,
      "articleLabels": [["label": "PRICEVAR"]]
    ],
    [
      "articleId": 210001,
      "articleTextReceipt": "Price variable conversion.",
      "articleSupplementaryText": "Package price in barcode is used if present. Otherwise Cashier is prompted for packageprice.",
      "numberOfDecimals": 2,
      "entryCode": "P",
      "price": 10,
      "repeatAllowed": 0,
      "articleLabels": [["label": "PRICECONV"]]
    ],
    [
      "articleId": 250001,
      "articleTextReceipt": "Weight variable article.",
      "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per weightunit.",
      "numberOfDecimals": 3,
      "entryCode": "E",
      "price": 20,
      "repeatAllowed": 0,
      "packageOrUnitPrice": 0,
      "articleLabels": [["label": "WEIGHTUNIT"]]
    ],
    [
      "articleId": 260001,
      "articleTextReceipt": "Weight variable article.",
      "articleSupplementaryText": "Weight (3 decimals) from barcode if present otherwise cashier is prompted. Price per package.",
      "numberOfDecimals": 3,
      "entryCode": "E",
      "price": 20,
      "repeatAllowed": 0,
      "packageOrUnitPrice": 1,
      "articleLabels": [["label": "WEIGHTPACK"]]
    ],
    [
      "articleId": 16,
      "articleTextReceipt": "Article 16.",
      "articleSupplementaryText": "Supplementary test",
      "articleSupplementaryTextType": 1,
      "articleFamilyId": 0,
      "articleGroupId": 10,
      "category": 11,
      "assortment": 12,
      "statisticsCode": 13,
      "vatCode": 1,
      "numberOfDecimals": 0,
      "entryCode": "E",
      "staffDiscountCode": 1,
      "additionalTextSegment": 8000,
      "costPrice": 10,
      "price": 10,
      "multiplyAllowed": 1,
      "repeatAllowed": 1,
      "erpArticleId": 111111,
      "packageOrUnitPrice": 0,
      "totalDiscountFlag": 1,
      "salesRule": 0,
      "voucherProvider": 0,
      "applyNegativePrice": 0,
      "additionInformation": 0,
      "statisticsCode1": 0,
      "statisticsCode2": 0,
      "linkedArticle": 0,
      "savingStampsEnabled": 0,
      "indicativePrice": 15.12,
      "assortment1": 0,
      "assortment2": 0,
      "salesGroupId": 0,
      "restrictions": ["minimum_age": 18],
      "displayGroup": 0,
      "PLC": 99,
      "discount": [
        "discountQuantity": 5,
        "discountCode": 1,
        "discountAmount": 10,
        "discountPercentage": 0,
        "discountInSets": 1,
        "discountMaximum": 20,
        "clubId": 5
      ],
      "foodAndBeverage": [
        "isAddition": 0,
        "articleType": 0,
        "isIngredient": 0
      ],
      "reorder": [
        "orderingId": 12345678901,
        "manufacturer": 0,
        "supplierId": 123456789012,
        "minimumStock": 1,
        "maximumStock": 2,
        "unitsPerPackage": 6,
        "minimumOrderQuantity": 3
      ],
      "control": [
        "disableFromExtendedDiscounts": 0,
        "manualDiscountNotAllowed": 0,
        "priceChangeNotAllowed": 0,
        "blockCashierPriceChange": 0,
        "enableOrderChangeNotification": 0,
        "shelfLabelPrint": 0,
        "stockPrinterNumber": 0,
        "manageStock": 0
      ],
      "barcodes": [
        [
          "barcode": 2008,
          "quantity": 3
        ],
        [
          "barcode": 2010,
          "quantity": 2
        ]
      ],
      "shelfLabel": [
        "labelText1": "MIDD.TALL., BL�",
        "labelText2": "NOORA",
        "labelText3": "",
        "labelText4": "",
        "origin": "",
        "classification": "",
        "salesUnit": [
          "content": 10,
          "unit": "cm"
        ],
        "baseUnit1": "m",
        "baseUnit2": "mm",
        "print": [
          "labelType": 1,
          "labelCopies": 1,
          "signType": 1,
          "signCopies": 1
        ],
        "material": 1,
        "color": 1,
        "size": 1
      ],
      "variantIds": [201, 202],
      "modifierIds": [301, 302],
      "specificationIds": [401]
    ]
  ]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.fiftytwo.com/masterdata/articles/v1/chain/1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```