# Eine Produktvariante über die Api richtig anlegen

**URL:** <https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230>\
**Category:** Programmierung\
**Created:** [28. November 2019 um 11:35 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230 "2019-11-28T11:35:23Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![stephanie\_schuessler](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@stephanie\_schuessler](https://forum.shopware.com/u/stephanie_schuessler)\
**Post date:** [28. November 2019 um 11:35 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/1 "2019-11-28T11:35:23Z")

</div>

ich habe erneut das Problem, das ich eine Produktvariante über die api wie swagger create product anlege indem ich die parentId des Produkts mitgebe und die options. Im Backend sieht es soweit auch gut aus. im Frontend ergibt sich bei der Detailansicht jedoch folgender Fehler:

Argument 1 passed to Shopware\Storefront\Page\Product\Configurator\ProductPageConfiguratorLoader::sortSettings() must be of the type array, null given

im backend wenn man unter Varainte&nbsp; auf den Button Variante generieren klcikt sieht man jedoch, dass die bereits gewählten optionen nicht angezeigt als 1 option ausgewählt

&nbsp;

---

<div class="post-metadata">

**Author:** ![stephanie\_schuessler](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@stephanie\_schuessler](https://forum.shopware.com/u/stephanie_schuessler)\
**Post date:** [29. November 2019 um 11:45 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/2 "2019-11-29T11:45:15Z")

</div>

&nbsp;

habe es gefunden:

es reicht nicht das Produkt über&nbsp; post product mithilfe der parentId und der options anzulegen. es muss zudem auch die configuratorSettings mit den options übergeben werden:

{  
&nbsp; „productId“: „c0cb50491b944bc4a955a01371a2edd5“, // parentId des Elternprodukts  
&nbsp; „optionId“: „cb4602f1647040c985cd30fdc011e4cf“  
}&nbsp;

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [3. Januar 2020 um 11:09 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/3 "2020-01-03T11:09:19Z")

</div>

> [@stephanie\_schuessler schrieb:](https://forum.shopware.com/profile/32169/stephanie_schuessler "stephanie\_schuessler")
> 
> &nbsp;
> 
> habe es gefunden:
> 
> es reicht nicht das Produkt über&nbsp; post product mithilfe der parentId und der options anzulegen. es muss zudem auch die configuratorSettings mit den options übergeben werden:
> 
> {  
> &nbsp; „productId“: „c0cb50491b944bc4a955a01371a2edd5“, // parentId des Elternprodukts  
> &nbsp; „optionId“: „cb4602f1647040c985cd30fdc011e4cf“  
> }&nbsp;

Hallo Stephanie!

Ich hänge aktuell auch in den Varianten und komme leider nicht weiter.  
Ich habe die parentId, options (bestehend aus einer liste von productId, id und groupId) und die configuratorSettings (bestehend aus einer liste aus&nbsp;productId, optionId) der Variante mitgegeben. In der DB sieht es soweit in Ordnung aus, was kracht: Wenn ich „Varianten generieren“ klicke werden die Optionen nicht ausgewählt die bereits gesetzt sind, Storefront Vorschau und die Storefront selbst.

Hast Du noch weitere Ideen, was nicht passen kann? …

Schöne Grüße,  
Niklas

---

<div class="post-metadata">

**Author:** ![stephanie\_schuessler](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@stephanie\_schuessler](https://forum.shopware.com/u/stephanie_schuessler)\
**Post date:** [3. Januar 2020 um 11:51 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/4 "2020-01-03T11:51:54Z")

</div>

Hallo Niklas,

du musst zusätzlich noch die configuratorSettings setzen wie z.B.:

…

&nbsp;&nbsp;&nbsp; “configuratorSettings”: [{  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;“optionId”: “164ec683e30040689e46d75276d0b5eb”  
&nbsp;&nbsp; &nbsp;},  
&nbsp;&nbsp; &nbsp;{  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;“optionId”: “ee089938faa94238971beaa0c49c348e”  
&nbsp;&nbsp; &nbsp;}]

…

&nbsp;

sonst legt er zwar die Varianten an aber die Zuordnung ist nicht vollständig, was dazu führt, daß im Frontend bei der Detailansicht eine Fehlermeldung kommt

Grüße

Stephanie

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [3. Januar 2020 um 12:10 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/5 "2020-01-03T12:10:35Z")

</div>

Hallo Stephanie,

Danke für’s Zeit nehmen! Habe ich aber (leider) schon so gemacht:

```
{   
   ...
   "parentId":"3ed4c00c027a4abfbd8e4a5a89de683f",
   "options":[ 
      { 
         "productId":"a166c111de40437082408d2eb4509f5a",
         "id":"a5b43bd3908f47dbbda3a1a6d8ade427",
         "group":{ 
            "id":"f89d61e209a54d14946ce1a12726d173"
         }
      }
   ],
   "configuratorSettings":[ 
      { 
         "optionId":"a5b43bd3908f47dbbda3a1a6d8ade427"
      }
   ]
}

```

Wie geschildert kann man im admin&nbsp;die Vorschau und Auswahl nicht ausführen,&nbsp;das Frontend kracht mit folgender Meldung:

```
ProductPageConfiguratorLoader::sortSettings() must be of the type array, null given

```

Das zeigt, dass er anscheinend den configurator nicht finden kann ([https://github.com/shopware/platform/blob/fb4bc791e185512bfde8cd0ea462b0cf527cf82f/src/Storefront/Page/Product/Configurator/ProductPageConfiguratorLoader.php#L84](https://github.com/shopware/platform/blob/fb4bc791e185512bfde8cd0ea462b0cf527cf82f/src/Storefront/Page/Product/Configurator/ProductPageConfiguratorLoader.php#L84))

Schöne Grüße!  
Niklas

---

<div class="post-metadata">

**Author:** ![stephanie\_schuessler](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@stephanie\_schuessler](https://forum.shopware.com/u/stephanie_schuessler)\
**Post date:** [3. Januar 2020 um 12:17 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/6 "2020-01-03T12:17:50Z")

</div>

Hallo Niklas,

sorry die configuratorSettings musst du über

/api/v1/product-configurator-setting

separat setzen sonst geht es nicht. Laut swagger kann am es zwar mitgeben, aber das will nicht so recht. Der body wäre dann:

{  
&nbsp; „productId“: „c0cb50491b944bc4a955a01371a2edd5“,  
&nbsp; „optionId“: „cb4602f1647040c985cd30fdc011e4cf“  
}

---

<div class="post-metadata">

**Author:** ![VaniKa](https://avatars.discourse-cdn.com/v4/letter/v/b5e925/32.png) [@VaniKa](https://forum.shopware.com/u/VaniKa)\
**Post date:** [3. März 2020 um 16:49 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/7 "2020-03-03T16:49:27Z")

</div>

Also bei mir hat es nun geklappt, indem ich das&nbsp;configuratorSettings-Array beim Hauptprodukt und dann bei den Varianten das options-Array angegeben habe. Mehr musste ich nicht machen.

Hauptprodukt:

```
[
	'configuratorSettings' => [
		[
			'optionId' => '71c2e8548c22475c8871e85b2f61a2f4' # Option
		]
	]
]

```

Variante:

```
[
	'parentId' => $parentId, # Hauptprodukt
	'options' => [
		[
			'id' => '71c2e8548c22475c8871e85b2f61a2f4' # Option
		]
	]
]

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Shaimole](https://avatars.discourse-cdn.com/v4/letter/s/df705f/32.png) [@Shaimole](https://forum.shopware.com/u/Shaimole)\
**Post date:** [4. März 2020 um 14:17 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/8 "2020-03-04T14:17:07Z")

</div>

Es gibt im Quellcode ein Test-Script welches für mich ein gutes Beispiel war:

[https://github.com/shopware/platform/blob/6.1/src/Core/Content/Test/Product/DataAbstractionLayer/Indexing/VariantListingIndexerTest.php](https://github.com/shopware/platform/blob/6.1/src/Core/Content/Test/Product/DataAbstractionLayer/Indexing/VariantListingIndexerTest.php)

---

<div class="post-metadata">

**Author:** ![FloC3](https://avatars.discourse-cdn.com/v4/letter/f/838e76/32.png) [@FloC3](https://forum.shopware.com/u/FloC3)\
**Post date:** [26. Oktober 2020 um 13:45 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/9 "2020-10-26T13:45:37Z")

</div>

hat hier jemand einen Tipp, wie ich Varianten mit “mehrdimensionalen” Options anlege?

Eindimensional war das ja kein Thema … aber wie gehts wenn ich Varianten aus mehreren Options bauen möchte? Da streikt mir grad mein logisches Denken …

Beispiel: Varianten bilden aus Farbe (gelb, rot, blau), Größe (S, M, L) und Kragenform (V-Kragen, Rundkragen).

muss ich mich dann selbst um die erstellung der Matrix kümmern? Oder kann ich Shopware irgendwie einfach nur alle Options mitgeben und es generiert die Varianten selbst?

---

<div class="post-metadata">

**Author:** ![lhairman](https://avatars.discourse-cdn.com/v4/letter/l/cdc98d/32.png) [@lhairman](https://forum.shopware.com/u/lhairman)\
**Post date:** [28. Oktober 2020 um 09:51 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/10 "2020-10-28T09:51:04Z")

</div>

Dafür musst Du dem Produkt die entsprechenden Optionen mitgeben.

```
[
	'parentId' => $parentId, # Hauptprodukt
	'options' => [
		[
			'id' => '71c2e8548c22475c8871e85b2f61a2f4', # Option 1 = Farbe
			'id' => '12345678901234567890123456789012', # Option 2 = Größe
			'id' => '12345678901234567890123456789013', # Option 3 = Kragenform
		]
	]
]

```

Aber eine Option, dass Du über die Schnittstelle beliebig viele Produkte (mit diversen Optionen) anlegst ist mir nicht bekannt. Das geht nur über die Admin-Page. Über die API musst Du jedes Produkt einzeln erzeugen. So habe ich das gelöst.

---

<div class="post-metadata">

**Author:** ![rmarks](https://avatars.discourse-cdn.com/v4/letter/r/9f8e36/32.png) [@rmarks](https://forum.shopware.com/u/rmarks)\
**Post date:** [21. November 2020 um 12:20 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/11 "2020-11-21T12:20:32Z")

</div>

Hallo zusammen, anlegen funktioniert soweit. Aber wie kann man die zuordnung&nbsp;über die API wieder entfernen? Parentid leer lassen hilft nicht.

---

<div class="post-metadata">

**Author:** ![Reimers](https://avatars.discourse-cdn.com/v4/letter/r/a88e57/32.png) [@Reimers](https://forum.shopware.com/u/Reimers)\
**Post date:** [1. Dezember 2021 um 13:37 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/12 "2021-12-01T13:37:17Z")

</div>

Hallo,  
auch ich stehe vor dem gleichen Problem.  
Weiß jemand, wie man die Zuordnung wieder entfernen kann?  
Danke!

---

<div class="post-metadata">

**Author:** ![stephanie\_schuessler](https://avatars.discourse-cdn.com/v4/letter/s/54ee81/32.png) [@stephanie\_schuessler](https://forum.shopware.com/u/stephanie_schuessler)\
**Post date:** [1. Dezember 2021 um 15:37 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/14 "2021-12-01T15:37:50Z")

</div>

Hallo zusammen,  
Optionen oder Eigenschaften u.a. kann man über die sync api löschen \</api/\_action/sync\>.  
Hier ist eine Doku dazu:

> **[Shopware API Home | Stoplight](https://shopware.stoplight.io/docs/admin-api/ZG9jOjEyMzA4NTUx-bulk-payloads)**
>
> The API Design Management Platform powering the world's leading API first companies. Powered by Stoplight.

Ich hoffe das hilft weiter.

---

<div class="post-metadata">

**Author:** ![Reimers](https://avatars.discourse-cdn.com/v4/letter/r/a88e57/32.png) [@Reimers](https://forum.shopware.com/u/Reimers)\
**Post date:** [1. Dezember 2021 um 15:56 UTC](https://forum.shopware.com/t/eine-produktvariante-uber-die-api-richtig-anlegen/63230/15 "2021-12-01T15:56:03Z")

</div>

Ja, hiermit hat es funktioniert:

```auto
// POST /api/_action/sync
{
	"delete-product-property": {
		"entity": "product_option",
		"action": "delete",
		"payload": [
			{
				"productId": "233baf9ff8ba4acc911dfb62fc7211e3",
				"optionId": "63156ca39b75440b861493674cbc4766"
			}
		]
	}
}

```

Danke!
