# REST-API Artikel-Eigenschaften

**URL:** <https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292>\
**Category:** Programmierung\
**Created:** [7. März 2017 um 13:25 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292 "2017-03-07T13:25:15Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tinklohl](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@Tinklohl](https://forum.shopware.com/u/Tinklohl)\
**Post date:** [7. März 2017 um 13:25 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/1 "2017-03-07T13:25:15Z")

</div>

Hallo zusammen,

ich versuche, Shopware mit Artikeln direkt aus unserem WWS zu befüllen.

Ich umgehe&nbsp;die PHP-Bibliothek und schicke&nbsp;direkt einen JSON-String an die API. Bisher funktioniert alles ganz gut, nur stoße&nbsp;ich&nbsp;bei den Artikeleigenschaften an meine Grenzen. Ich möchte den Artikel mit einem eigenen Feld „USK“ befüllen.

Ich versuche via PUT den Artikel zu aktualisieren:

```
[
    {
        "name":"TestArtikel",
        "active":"1",
        "keywords":"TestArtikel",
        "tax":"19",
        "mainDetail":{
            "number":"01234",
            "inStock":"10",
            "ean":"0123456789012",
            "prices":[
                {
                    "customerGroupKey":"EK",
                    "price":"22"
                }
            ],
            "propertyValues":[
                {
                    "option":[
                        {
                            "name": "USK"
                        },
                        "value": "USK 12"
                    ]
                }
            ]
        }
    }
]

```

„propertyValues“ ist doch das richtige Objekt dazu ?

propertyValues.option.name und propertyValues.value passen mit den gesetzten Eigenschaften im Backend 1:1 überein.

Der Aufruf auf die API ist zwar erfolgreich, jedoch ist keine Eigenschaft am Artikel gesetzt worden.

Wo liegt der Fehler ?

&nbsp;

Danke

---

<div class="post-metadata">

**Author:** ![Argee](https://avatars.discourse-cdn.com/v4/letter/a/e9c0ed/32.png) [@Argee](https://forum.shopware.com/u/Argee)\
**Post date:** [7. März 2017 um 14:56 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/2 "2017-03-07T14:56:12Z")

</div>

Ich weiß zwar nicht, ob propertyValues&nbsp;das richtige Objekt dafür ist, aber laut Dokumentation ist propertyValues nicht in den mainDetails definiert. Vielleicht liegt da der Fehler?

---

<div class="post-metadata">

**Author:** ![NextMike](https://avatars.discourse-cdn.com/v4/letter/n/838e76/32.png) [@NextMike](https://forum.shopware.com/u/NextMike)\
**Post date:** [7. März 2017 um 15:01 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/3 "2017-03-07T15:01:38Z")

</div>

Ist die Klammer hier richtig?

![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/c5249a19040360e76cf241562158a70bb4c0cb6a.png)

---

<div class="post-metadata">

**Author:** ![Argee](https://avatars.discourse-cdn.com/v4/letter/a/e9c0ed/32.png) [@Argee](https://forum.shopware.com/u/Argee)\
**Post date:** [7. März 2017 um 15:05 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/4 "2017-03-07T15:05:30Z")

</div>

> [@NextMike schrieb:](https://forum.shopware.com/profile/19433/NextMike "NextMike")
> 
> Ist die Klammer hier richtig?
> 
> ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/c5249a19040360e76cf241562158a70bb4c0cb6a.png)

nein!&nbsp;

---

<div class="post-metadata">

**Author:** ![Tinklohl](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@Tinklohl](https://forum.shopware.com/u/Tinklohl)\
**Post date:** [8. März 2017 um 08:58 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/5 "2017-03-08T08:58:04Z")

</div>

> [@Argee schrieb:](https://forum.shopware.com/profile/25914/Argee "Argee")
> 
> > [@NextMike schrieb:](https://forum.shopware.com/profile/19433/NextMike "NextMike")
> > 
> > Ist die Klammer hier richtig?
> > 
> > ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/c5249a19040360e76cf241562158a70bb4c0cb6a.png)
> 
> nein!&nbsp;

Der Schnittstellenbeschreibung zufolge ist die Klammer korrekt:

```
    'propertyValues' => array(
        array(
            'option' => array('name' => "Alcohol content"), // '10%'
        ),
        array(
            'option' => array('name' => "Color"), // 'rot'
        )
    )

```

&nbsp;Seht&nbsp;hier:&nbsp;[https://developers.shopware.com/developers-guide/rest-api/examples/article/#example-6-article-properties](https://developers.shopware.com/developers-guide/rest-api/examples/article/#example-6-article-properties)

Dies habe ich versucht:

```
"propertyValues":[
    {
        "option": {
            "name": "USK",
            "value": "USK 12"
        }
    }
]

```

Und dies:

```
"propertyValues":{
    "option": {
        "name": "USK",
        "value": "USK 12"
    }
}

```

Wobei der letzte Eintrag für mich garkeinen Sinn macht.

Ergebnis bleibt das Gleiche:  
API-Aufruf ist ein Erfolg, jedoch keine Eigenschaften gesetzt

---

<div class="post-metadata">

**Author:** ![WillemMeert](https://avatars.discourse-cdn.com/v4/letter/w/5daacb/32.png) [@WillemMeert](https://forum.shopware.com/u/WillemMeert)\
**Post date:** [8. März 2017 um 21:57 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/6 "2017-03-08T21:57:19Z")

</div>

Haben Sie zuerst im Menu Artikel -\> Eigenschaften, die Eigenschaft “USK” hinzugefügt ?

Haben Sie schon mal im Backend ein Artikel angelegt mit solche Eigenschaft und dann über die API mit GET abgefragt ? Dann sehen Sie die genaue Struktur die mann braucht zum POSTen.

Braucht mann da keine ‘filterGroupId’ ?

---

<div class="post-metadata">

**Author:** ![Tinklohl](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@Tinklohl](https://forum.shopware.com/u/Tinklohl)\
**Post date:** [9. März 2017 um 10:50 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/7 "2017-03-09T10:50:27Z")

</div>

Danke WillemMeert,

ich habe im Backend die Eigenschaft angelegt. Leider sieht die Datenstruktur beim GET anders aus:

```
"propertyValues": [
    {
        "id": 324,
        "value": "USK 6",
        "position": 1,
        "optionId": 26,
        "mediaId": null
    }
]

```

Selbst so funktioniert der PUT nicht.

Immerhin hat das Setzen der ‚filterGroupId‘ schon mal bewirkt, dass das richtige Eigenschafts-Set im Backend angezeigt wird.  
Leider werden die Eigenschaften an sich jedoch auch mit verschiedenen Tests des ‚propertyValues‘-Objekt nicht gesetzt…

---

<div class="post-metadata">

**Author:** ![Tinklohl](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@Tinklohl](https://forum.shopware.com/u/Tinklohl)\
**Post date:** [9. März 2017 um 11:48 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/8 "2017-03-09T11:48:17Z")

</div>

So funktioniert es endlich:

```
        "propertyValues":[
            {
                "option": {
                    "name": "USK"
                },
                "value": "USK 6"
            }
        ]

```

Eine eckige Klammer beim ‚options‘ Objekt war zu viel und zusammen mit dem Setzen der ‚filterGroupId‘ funktioniert es endlich.

Danke WillemMeert für den Tipp in die richtige Richtung !

---

<div class="post-metadata">

**Author:** ![Argee](https://avatars.discourse-cdn.com/v4/letter/a/e9c0ed/32.png) [@Argee](https://forum.shopware.com/u/Argee)\
**Post date:** [9. März 2017 um 12:06 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/9 "2017-03-09T12:06:35Z")

</div>

> [@Tinklohl schrieb:](https://forum.shopware.com/profile/21644/Tinklohl "Tinklohl")
> 
> > [@Argee schrieb:](https://forum.shopware.com/profile/25914/Argee "Argee")
> > 
> > > [@NextMike schrieb:](https://forum.shopware.com/profile/19433/NextMike "NextMike")
> > > 
> > > Ist die Klammer hier richtig?
> > > 
> > > ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/c5249a19040360e76cf241562158a70bb4c0cb6a.png)
> > 
> > nein!&nbsp;
> 
> Der Schnittstellenbeschreibung zufolge ist die Klammer korrekt:
> 
> ‚propertyValues‘ =\> array(  
> array(  
> ‚option‘ =\> array(‚name‘ =\> „Alcohol content“), // ‚10%‘  
> ),  
> array(  
> ‚option‘ =\> array(‚name‘ =\> „Color“), // ‚rot‘  
> )  
> )
> 
> &nbsp;

Die Klammer ist dort nicht korrekt, weil sie zu einem ungültigen JSON-String führt. In JavaScript (und damit auch im JSON-Format) bedeuten geschwungene Klammern {} ein Objekt. Hier muss man immer ein Key-Value-Paar schreiben, also zB.:

```
{
    "key1": "value1",
    "key2": "value2",
    "key3": "value3",
    "key4": "value4"
}

```

Eckige Klammern hingegen zeigen ein Array an und dieses kann in JSON nur Werte beinhalten, also zB.:

```
["value1","value2","value3"]

```

In PHP arbeitet man hingegen mit „Arrays“ (vergleichbar dem Array in JSON) und „Associative Arrays“ (vergleichbar dem Objekt in JSON). Da steht aber so etwas wie

```
["key": "value"]

```

und das gibt es in JSON einfach nicht.

---

<div class="post-metadata">

**Author:** ![Tinklohl](https://avatars.discourse-cdn.com/v4/letter/t/45deac/32.png) [@Tinklohl](https://forum.shopware.com/u/Tinklohl)\
**Post date:** [9. März 2017 um 13:05 UTC](https://forum.shopware.com/t/rest-api-artikel-eigenschaften/44292/10 "2017-03-09T13:05:59Z")

</div>

So weit korrekt. Die eckige Klammer muss sich durch einen Fehler in der Programmierung unserer WWS-Schnittstelle eingeschlichen haben. Letztendlich fehlte doch die ‘filterGroupId’, damit der Call auf die API funktioniert. Dieser Hinweis kam erst durch WillemMeert’s Anwort.

BTW werden&nbsp;Assoziative Arrays in PHP folgendermaßen deklariert&nbsp; ![Smile](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/bac5f5766b6a20565a8fb995345b4e41d24daac0.png "Smile")

```
["key" => "value"];

```

&nbsp;
