# Produkte ("products")

Produkte und beim Produkt definierte Kategoriezuweisungen werden gemeinsam exportiert.

Vom Datenaustauschformat unterstützt werden einfache und konfigurierbare Produkte in einer und mehreren Sprachen, sowie optionale Unterstützung für Multistore (Price per Store)/Multi-Inventory (Inventory per Store).

Attribute wie weight, sku und status sind globale Attribute (d.h. sprach/store-unabhängig). Die Attribute \_categories (Kategoriezuordnungen) und \_images (Bildzuordnungen) sind optional und immer global (also sprach/store-unabhängig).

Ein Scope (Geltungsbereich) ist der Abschnitt, der sprach- bzw. storebezogene Produktdaten definiert (Preise, Produkttexte)

Produktbilder liegen auf einem externen Bilderspeicher (SFTP oder Amazon S3). Als Bildangaben sind immer alle zum Basisordner relativen Pfadangaben anzugeben.

## Aufbau

```
"products": array of `ProductObject`
```

### ProductObject:

| Property name       | Description                                                                                                      | Definition                                                       |
| ------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| sku                 | eindeutige Produktkennung                                                                                        | alphanumeric string, unique, max 255 characters                  |
| weight              | Produktgewicht in kg                                                                                             | decimal                                                          |
| status              | Produkt-Freigabe für Webshop: 1=freigegeben, 0=nicht freigegeben                                                 | numeric                                                          |
| stock               | Lagerstand für Webshop                                                                                           | numeric                                                          |
| barcodes            | Mit Komma getrennte EAN Liste                                                                                    | string (utf8) Zahlen, Komma und Leerzeichen erlaubt              |
| new\_date\_from     | Datum für "Neu ab"                                                                                               | date, format YYYY-MM-DD, optional, new-to > new-from             |
| new\_date\_to       | Datum für "Neu bis"                                                                                              | date, format YYYY-MM-DD, optional, new-to > new-from             |
| featured            | Markierung                                                                                                       | true/false                                                       |
| sale\_stepping      | Mengenangabe in der das Produkt verkauft werden darf. Verkaufte Menge muss ein Vielfaches der Mengenabgabe sein. | numeric >=1, Standardwert 1                                      |
| manufacturer        | Manufacturer Name                                                                                                | string(utf8)                                                     |
| manufacturer\_link  | Link zur Produktseite des Herstellers                                                                            | string(utf8)                                                     |
| \_categories        | **array of** CategoryObject                                                                                      | (optional)                                                       |
| \_images            | **array of** ImageObjects, Pfade/Urls zu den Bildern                                                             |                                                                  |
| \_price             | `PriceObject`                                                                                                    |                                                                  |
| \_linked\_skus      | **array of** `ProductLinkObject`                                                                                 | Produktverknüpfungen für Up-, Cross-selling und Related Products |
| \_scopes            | **array of** `ProductProperties`                                                                                 | Übersetzungen von Produktfeldern                                 |
| \_variation\_config | `VariationObject`                                                                                                | nur bei konfigurierbaren Produkten                               |

```
{
  "products": [
    {
      "sku": "SKU1",
      "weight": 0.1,
      "status": 1,
      "stock": 99,
      "manufacturer" : "Herstellername",
      "manufacturer_link": "www.hersteller.com/products/1"
      "_categories": [
        {
          "cat_id": 1
        },
        {
          "cat_id": 2
        },
        {
          "cat_id": 3
        }
      ],
      "_images": [
        {
          "url": "www.example.com/path/to/imagefile1.jpg" ,
          "position": 1
        },
        {
          "rel_path": "www.example.com/path/to/imagefile2.jpg",
          "position": 10
        }
      ],
      "_price": {
        "regular": 9.1583,
        "special": 8.325,
        "taxclass": "REGULAR",
        "_tiers": [
          {
            "pricelist_id": 1,
            "quantity": 10,
            "price": "8.99"
          },
          {
            "pricelist_id": 1,
            "quantity": 20,
            "price": "7.99"
          }
        ]
      },
      "_scopes": [
        {
          "scopeid": "de",
          "data": [
            {
              "field": "name",
              "data": "Produktname"
            },
            {
              "field": "short_description",
              "data": "Deutsche Kurzbeschreibung"
            },
            {
              "field": "description",
              "data": "Deutsche Langbeschreibung"
            }
          ]
        },
        {
          "socpeid": "en",
          "data": [
            {
              "field": "name",
              "data": "Product name"
            },
            {
              "field": "short_description",
              "data": "english short description"
            },
            {
              "field": "description",
              "data": "english description"
            }
          ]
        }
      ]
    }
  ]
}
```

### ImageObject

| Property name | Description                 | Definition          |
| ------------- | --------------------------- | ------------------- |
| url           | url zum Produktbild         | string(utf8)        |
| position      | Position/Reihung des Bildes | numeric, ganze Zahl |

### PriceObject

| Property name       | Description                                             | Definition                               |
| ------------------- | ------------------------------------------------------- | ---------------------------------------- |
| regular             | normaler Webshop Verkaufspreis (netto)                  | decimal, 4 decimals precision            |
| special             | reduzierter Webshop Sonderpreis (netto)                 | decimal, 4 decimals precision, optional  |
| special\_date\_from | Datum ab Gültigkeit Sonderpreis                         | date, format utc with timezone, optional |
| special\_date\_to   | Datum bis Gültigkeit Sonderpreis                        | date, format utc with timezone, optional |
| taxclass            | Kennzeichen für Steuerklasse (wird auf Gateway gemappt) | alphanumeric string, max 255 chars       |
| \_tiers             | **array of** `PriceTierObject`                          | optional                                 |

### PriceTierObject

| Property name | Description                                                                                                                 | Definition                    |
| ------------- | --------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| pricelist\_id | Kundengruppen-Kennung (wird auf Gateway gemappt). "0" or "" (empty) = allgemeine Preisstaffel (nicht kundengruppenabhängig) | alphanumeric string, optional |
| quantity      | Ab Menge (bei Staffelpreis), sonst 1                                                                                        | numeric, min. 1               |
| price         | Preis netto                                                                                                                 | decimal, 4 decimals precision |

### ProductProperties

Liste aller übersetzten Felder eines Produktes

| Property name      | Description                        | Definition                   |
| ------------------ | ---------------------------------- | ---------------------------- |
| name               | Produktname                        | string (utf8), max 255 chars |
| short\_description | Webshop Kurzbeschreibung           | string (utf8)                |
| description        | Webshop Langbeschreibung           | string (utf8)                |
| delivery-ready     | Text für "Versandbereit in" Angabe | string (utf8)                |

### VariationObject

| Property name | Description                  | Definition                                                               |
| ------------- | ---------------------------- | ------------------------------------------------------------------------ |
| attributes    | **array of** attribute names | Liste der Attributnamen, welche die Konfiguration des Artikels bestimmen |
| children      | **array of** product SKUs    | Liste der Produkt-SKUs, aus denen das konfig. Produkt besteht            |

Beispiel: Konfigurierbares Produkt mit 2 Varianten (Farbe=Grün und Farbe=Blau). Farbvariante Blau kostet 13 € inkl. 20% MwSt, Farbvariante Grün kostet 12 € inkl. 20% MwSt..

```
{
  "products": [
    {
      "sku": "ConfigProduct1",
      "status": 1,
      "_categories": [
        {
          "cat_id": 1
        },
        {
          "cat_id": 2
        },
        {
          "cat_id": 3
        }
      ],
      "_variation_config": {
        "attributes": [
          "farbe"
        ],
        "children": [
          "child-sku-1",
          "child-sku-2"
        ]
      },
      "_images": [
        {
          "url": "www.example.com/path/to/imagefile1.jpg" ,
          "position": 1
        },
        {
          "rel_path": "www.example.com/path/to/imagefile2.jpg",
          "position": 10
        }
      ],
      "_scopes": [
        {
          "scopeid": "default",
          "data": [
            {
              "field": "name",
              "data": "Produktname"
            },
            {
              "field": "short_description",
              "data": "Kurzbeschreibung"
            },
            {
              "field": "description",
              "data": "Beschreibung"
            }
          ]
        }
      ]
    },
    {
      "sku": "child-sku-1",
      "weight": 1,
      "stock": 1,
      "status": 1,
      "_price": {
        "regular": 10.8333,
        "taxclass": "REGULAR"
      },
      "_scopes": [
        {
          "scopeid": "default",
          "data": [
            {
              "field": "name",
              "data": "Variante Blau"
            },
            {
              "field": "farbe",
              "data": "blau"
            }
          ]
        }
      ]
    },
    {
      "sku": "child-sku-2",
      "weight": 1,
      "stock": 1,
      "status": 1,
      "_price": {
        "regular": 10,
        "taxclass": "REGULAR"
      },
      "_scopes": [
        {
          "scopeid": "default",
          "data": [
            {
              "field": "name",
              "data": "Variante Grün"
            },
            {
              "field": "farbe",
              "data": "grün"
            }
          ]
        }
      ]
    }
  ]
}
```

### ProductLinkObject

| Property name | Description               | Definition                                                                                 |
| ------------- | ------------------------- | ------------------------------------------------------------------------------------------ |
| type          | Type of the listed SKUs   | can be "upsell", "crosssell" or "related" (Upselling, Crossselling oder Zubehoer Produkte) |
| skus          | **array of** product SKUs | Liste der Upsell-Produkt-SKUs                                                              |

Beispiel: Produkt mit Links

```
{
  "products": [
    {
      "sku": "SKU1",
      "weight": 0,
      "_categories": [
        {
          "cat_id": 1
        },
        {
          "cat_id": 2
        },
        {
          "cat_id": 3
        }
      ],
      "_images": [
        {
          "url": "www.example.com/path/to/imagefile1.jpg" ,
          "position": 1
        },
        {
          "rel_path": "www.example.com/path/to/imagefile2.jpg",
          "position": 10
        }
      ],
      "name": "Produktname",
      "short_description": ".....",
      "description": ".....",
      "status": 1,
      "stock": 1,
      "_price": {
        "regular": 9.1583,
        "special": 8.325,
        "taxclass": "REGULAR"
      },
      "_linked_skus": [
        {
            "type": "upsell",
            "skus": [
                "linked-upsell-sku-1",
                "linked-upsell-sku-2"
            ]
        },
        {
            "type": "crosssell",
            "skus": [
                "linked-upsell-sku-1",
                "linked-upsell-sku-2"
            ]
        },
        {
            "type": "related",
            "skus": [
                "linked-upsell-sku-1",
                "linked-upsell-sku-2"
            ]
        }
      }
    }
  ]
}
```

## Mapping Tabelle, Anforderungen onRetail

### ProductObject

| JSON API FELD       | Transformation                                 | onRetail Datenquelle                | Anpassung                                                                                                                 | Aufwand |
| ------------------- | ---------------------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------- |
| sku                 | 1:1                                            | product.product.product\_code       | -                                                                                                                         | `#0f0`  |
| weight              | 1:1                                            | product.product.weight              | -                                                                                                                         | `#0f0`  |
| status              | 1:1                                            | -                                   | Neues Feld product.template.webshop\_active                                                                               | `#ff0`  |
| stock               | Summe der Lagerstände der zu verwendeten Läger | -                                   | Neue Einstellung welche Läger für den Webshop verwendet werden sollen. Neues computed Feld product.product.webshop\_stock | `#ff0`  |
| barcodes            | 1:1                                            | product.template.barcodes           | barcodes Feld zu product.product hinzufügen                                                                               | `#0f0`  |
| new\_date\_from     | 1:1                                            | -                                   | Neues Datum Feld in product.template                                                                                      | `#0f0`  |
| new\_date\_to       | 1:1                                            | -                                   | Neues Datum Feld in product.template                                                                                      | `#0f0`  |
| featured            | 1:1                                            | -                                   | Neues bool Feld in product.template                                                                                       | `#0f0`  |
| sale\_stepping      | 1:1                                            | -                                   | Neues Feld                                                                                                                | `#0f0`  |
| manufacturer        | 1:1                                            | manufacturer.manufacturer.name      | Neues Model für Hersteller                                                                                                |         |
| manufacturer\_link  | 1:1                                            | product.manufacturer\_url           | Neues Feld                                                                                                                |         |
| \_categories        | `CategoryObject`                               | product.template.public\_categ\_ids | -                                                                                                                         |         |
| \_images            | 1:1                                            | product.template/product.image\_ids | Mehrere Bilder im Template und der Variante hinterlegen                                                                   | `#ff0`  |
| \_price             | `PriceObject`                                  | -                                   | -                                                                                                                         |         |
| \_linked\_skus      | **array of** `ProductLinkObject`               | -                                   | -                                                                                                                         |         |
| \_scopes            | **array of** `ProductProperties`               | -                                   | -                                                                                                                         |         |
| \_variation\_config | **array of** `VariationObject`                 | -                                   | Auflösen der vorhandenen Attribute von product.template                                                                   |         |

### ImageObject

| JSON API FELD | Transformation | onRetail Datenquelle         | Anpassung           | Aufwand |
| ------------- | -------------- | ---------------------------- | ------------------- | ------- |
| url           | url generieren | product.image, ir.attachment | -                   | `#0f0`  |
| position      | 1:1            | product.image.sequence       | Neues Feld sequence | `#F00`  |

### PriceObject

Für die Preisverwaltung wird eine Preisliste für den Webshop bei der Installation angelegt die nicht gelöscht werden kann. Preislisteneinträge die eine Mengenangabe haben, werden als `PriceTierObject` exportiert. Einträge ohne Mengenangabe werden als special Preis exportiert. Bei mehrfachen anzuwendenden Preisen, wird der niedrigste Preis exportiert.\
Prio:\
Artikel > Kategorie > Global

| JSON API FELD       | Transformation                                    | onRetail Datenquelle         | Anpassung | Aufwand |
| ------------------- | ------------------------------------------------- | ---------------------------- | --------- | ------- |
| regular             | Berechnung, Normaler Preis wenn kein Webshoppreis | product.pricelist            | -         | `#0f0`  |
| special             | Berechnung der möglichen Preise                   | product.pricelist            | -         | `#F00`  |
| special\_date\_from | 1:1                                               | product.pricelist            | -         | `#ff0`  |
| special\_date\_to   | 1:1                                               | product.pricelist            | -         | `#ff0`  |
| taxclass            | Mappingtabelle                                    | product.product.tax\_id.code | Mapping   | `#ff0`  |
| tiers               | **array of** `PriceTierObject`                    | -                            | -         |         |

### PriceTierObject

| JSON API FELD | Transformation                  | onRetail Datenquelle                 | Anpassung | Aufwand |
| ------------- | ------------------------------- | ------------------------------------ | --------- | ------- |
| pricelist\_id | 1:1                             | product.pricelist.id                 | -         | `#ff0`  |
| quantity      | 1:1                             | product.pricelist.item.min\_quantity | -         | `#ff0`  |
| price         | Berechnung der möglichen Preise | product.pricelist                    |           | `#F00`  |

### ProductProperties (Üersetzungen)

Übersetzungen befinden sich im Model ir.translation\
Im Feld source steht die englische Übersetzung, die der anderen installierten Sprachen im Feld value

| JSON API FELD      | Transformation | onRetail Datenquelle               | Anpassung                                                                                                                    | Aufwand |
| ------------------ | -------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ------- |
| name               | 1:1            | -                                  | Neues Feld für den Webshop Produktnamen. Begrenzung auf 255 Zeichen. Produktname wenn Webshopproduktname nicht vorhanden ist | `#ff0`  |
| short\_description | 1:1            | product.template.description\_sale | HTML Sonderzeichen filtern                                                                                                   | `#ff0`  |
| description        | 1:1            | -                                  | Neues Textfeld                                                                                                               | `#ff0`  |
| delivery-ready     | 1:1            | -                                  | Neues Char Feld für product.template                                                                                         | `#0f0`  |

### VariationObject

| JSON API FELD | Transformation | onRetail Datenquelle                                | Anpassung | Aufwand |
| ------------- | -------------- | --------------------------------------------------- | --------- | ------- |
| attributes    | 1:1            | **array of** product.template.attribute\_line\_ids  | -         | `#0f0`  |
| children      | 1:1            | **array of** product.template.product\_variant\_ids | -         | `#0f0`  |

### ProductLinkObject

| JSON API FELD           | Transformation | onRetail Datenquelle                                        | Anpassung                   |
| ----------------------- | -------------- | ----------------------------------------------------------- | --------------------------- |
| type                    | 1:1            | depending on what we export: (upsell, crosssell or related) | -                           |
| skus (type="upsell")    | 1:1            | **array of** product.template.alternative\_product\_ids     | -                           |
| skus (type="crosssell") | 1:1            | -                                                           | **array of** Neues m2m Feld |
| skus (type="related")   | 1:1            | **array of** product.template.accessory\_product\_ids       | -                           |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://helpcenter.etron.info/verwaltungsoberflache/konfiguration/e-commerce/json-schnittstelle/produkte-products.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
