# \[REST-API\] Hauptvariante über Varianten-Endpunkt setzen

**URL:** <https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145>\
**Category:** Programmierung\
**Created:** [2. Februar 2016 um 11:40 UTC](https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145 "2016-02-02T11:40:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![phst](https://avatars.discourse-cdn.com/v4/letter/p/57b2e6/32.png) [@phst](https://forum.shopware.com/u/phst)\
**Post date:** [2. Februar 2016 um 11:40 UTC](https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145/1 "2016-02-02T11:40:40Z")

</div>

Hallo,

gibt es eine Möglichkeit die Hauptvariante eines Artikels über den Varianten-Endpunkt der REST-API zu setzen?

Zur Zeit verwenden wir zum Anlegen und Bearbeiten von Artikelvarianten ausschließlich den Varianten-Endpunkt. Ausgangslage ist ein Variantenartikel (id: 12) mit mehreren Varianten (122 und 123), wobei Variante “122” die aktuelle&nbsp;Hauptvariante ist. Es soll über einen “PUT”-Request auf den Varianten-Endpunkt die eingestellte Hauptvariante geändert werden:

```
PUT /api/variants/123
{"kind": 1, [..]}

```

Auch wurde versucht&nbsp;zuvor oder danach mit einem seperatem “PUT”-Request die alte Hauptvariante wieder als normale Variante zu markieren:

```
PUT /api/variants/122
{"kind": 2}

```

Leider führen alle bisherigen Versuche zu Inkonsitenzen in der Datenbank, da zwar die “kind”-Spalte in der Tabelle s\_article\_details&nbsp;wie gewünscht gesetzt ist (1 bei Variante 123; 2 bei allen anderen Varianten), aber in der Tabelle s\_articles, in der noch einmal redundant die Hauptvariante in der Spalte “main\_detail\_id” hinterlegt ist, ist noch die vorherige Hauptvariante angegeben. Dies führt natürlich zu Bugs sowohl im Frontend als auch im Backend (z.B. sorgt der Versuch die Hauptvariante über das Backend einzustellen dazu, dass alle Varianten in s\_article\_details als Hauptvariante markiert werden).

Nach einem kurzen&nbsp;Blick in den Source-Code (/engine/Shopware/Components/Api/Resource/Variant.php) scheint es so, als wäre gar kein Code implementiert, um diesen speziellen Fall abzudecken. Meiner Meinung nach sollte hier zumindest ein Fehler geworfen werden, wenn über die API versucht wird die “kind” Spalte zu ändern, da dies ja unweigerlich zu Inkonsistenzen führt.

Gibt es eine Möglichkeit die ich übersehe, z.B. einen undokumentierten Parameter o.ä.?

Der einzige Workaround der mir aktuell einfällt, wäre&nbsp;die Hauptvariante über einen 2. “PUT”-Request zum Artikel-Endpunkt zu setzen, da hier der entsprechende Code zum Ändern der Hauptvariante implementiert ist. Also z.B.:

```
PUT /api/articles/12
{"variants": {"id": 123, "isMain": true}}
oder gleichbedeutend:
{"variants": {"id": 123, "standard": true}}

```

Wobei weder der Parameter “standard” noch “isMain” in der Shopware 5 REST-API-Dokumentation erwähnt&nbsp;wird.

Mit freundlichen Grüßen,

Philipp

PS: Ich hätte gerne sinnvolle Tags auf meinem Beitrag gesetzt, leider scheinen aber außer den 4 populärsten Tags (die alle nichts mit dieser Frage zu tun haben)&nbsp;kein Tag zu existieren.

---

<div class="post-metadata">

**Author:** ![derkosta](https://avatars.discourse-cdn.com/v4/letter/d/65b543/32.png) [@derkosta](https://forum.shopware.com/u/derkosta)\
**Post date:** [2. Februar 2016 um 20:28 UTC](https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145/2 "2016-02-02T20:28:46Z")

</div>

Ich vermute ich habe das “selbe” Problem. Wenn ich einen Artikel mit 3 Varianten importiere dann erscheinen z.b. beim Google Produktexport 4 Artikel. Der Hauptartikel ohne Variantennamen sowie die 3 Varianten.

Legt man einen Artikel per Hand im Backend an, dann erscheint der Hauptartikel nirgends. Nur die 3 Varianten als solches.

Was du beschreibst würde die Problematik&nbsp;beheben?

---

<div class="post-metadata">

**Author:** ![phst](https://avatars.discourse-cdn.com/v4/letter/p/57b2e6/32.png) [@phst](https://forum.shopware.com/u/phst)\
**Post date:** [3. Februar 2016 um 10:40 UTC](https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145/3 "2016-02-03T10:40:50Z")

</div>

Hallo,

also aktuell haben wir das Ganze gelöst, in dem wir das Feld „kind“ nicht mehr über den Varianten-Endpunkt setzen, sondern nach dem Aktualisieren der Variante nocheinmal ein&nbsp;„PUT“-Request an den Artikel-Endpunkt absetzen:

```
PUT /api/articles/[article_id]
{"variants": [{"id": [hauptvarianten_id], "isMain": true}]}

```

(oben fehlen die eckigen Klammern um den „variants“-Array)

Der zweite Aufruf setzt dann sowohl das Feld „main\_article\_id“ auf dem Artikel korrekt, als auch das Feld „kind“ auf allen Varianten.

Prinzipiell könnte man statt der Option „isMain“ auf der Variante auch die ConfiguratorOptions nocheinmal übergeben. Dann würde ggf. ein&nbsp;noch existierender Details Datensatz gelöscht, der keine ConfiguratorOptions gesetzt hat, aber zuvor als main\_detail angegeben war. Das wäre ganz praktisch wenn man einen normalen Artikel in einen Variantenartikel umwandelt.

Für unseren Workflow wäre es aber um einiges sinnvoller das ganze mit einem Request zu machen (am Besten über den&nbsp;Variant-Endpunkt), da wir das erste Request nicht mehr rückgängig machen können, wenn das erste fehlschlägt.

&nbsp;

Grüße

Philipp

---

<div class="post-metadata">

**Author:** ![phst](https://avatars.discourse-cdn.com/v4/letter/p/57b2e6/32.png) [@phst](https://forum.shopware.com/u/phst)\
**Post date:** [3. Februar 2016 um 10:55 UTC](https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145/4 "2016-02-03T10:55:09Z")

</div>

Hallo,&nbsp;

> Ich vermute ich habe das „selbe“ Problem. Wenn ich einen Artikel mit 3 Varianten importiere dann erscheinen z.b. beim Google Produktexport 4 Artikel. Der Hauptartikel ohne Variantennamen sowie die 3 Varianten.

Das hört sich allerdings eher danach an, dass das ursprüngliche main\_detail&nbsp;nicht gelöscht wurde.

Der von mir beschriebene Fehler müsste auch im Backend sichtbar sein. Also Der Artikel taucht zweimal auf, mit zwei verschiedenen&nbsp;Varianten Artikelnummern, auch wenn „Varianten anzeigen“ nicht angewählt ist.

Normalerweise sollte bei einem Variantenartikel außer den Details der Varianten kein weiteres Detail für den „Hauptartikel“ mehr vorhanden sein, Wenn man allerdings zuerst den Hauptartikel inkl. main\_detail anlegt und im Anschluss die Varianten über den Varianten-Endpunkt, bleibt das alte main\_detail zurück. Das würde dann über die zweite Möglichkeit aus dem obigen Post behoben.

Grüße

Philipp

---

<div class="post-metadata">

**Author:** ![derkosta](https://avatars.discourse-cdn.com/v4/letter/d/65b543/32.png) [@derkosta](https://forum.shopware.com/u/derkosta)\
**Post date:** [7. Februar 2016 um 23:57 UTC](https://forum.shopware.com/t/rest-api-hauptvariante-uber-varianten-endpunkt-setzen/34145/5 "2016-02-07T23:57:33Z")

</div>

Hallo&nbsp;Philipp, danke für die Erläuterung.

In der Tat wird bei mir eine Zeile in der s\_article\_details zu viel angelegt.

Mal sehen was der Importhersteller dazu sagt.
