Custom Fields & Produkt erstellen über API

Ich habe über das Backend ein Custom Field Set (Herstellerinfos) sowie ein Custom-Field (Herstellernummer) angelegt und sehe dieses auch im Produktbereich im Backend. Soweit so gut.

Nun möchte ich gerne über meine API während des Erstellen / Updaten der Produkte dieses entsprechende Custom Field mit einem Wert (z.B: „123456“) belegen. Leider stehe ich auf dem Schlauch wie das gehen soll.

In der API Doku habe ich gesehen, dass man via API diese FieldSets erzeugen kann, aber mir ist schleierhaft wie ich bei einem bereits erzeugten Custom Field den Wert an den Artikel mitgeben kann.

Meine Artikelerzeugung sieht aktuell so aus…


  $reqData = [
            "id" => $id,
            'name' => $article->getNames()['D'],
            "productNumber" => $article->getArtNr(),
            "stock" => $article->getAmount(),
            "taxId" => "9829d7c873504a349b98b6bdd3622c51",
            "price" => [ array(
                "currencyId" => "b7d2554b0ce847cd82f3ac9bd1c0dfca",
                "gross" => 2,
                "net" => 2,
                "linked" => false
            )
            ],
            "active" => true,
            "translations" => [
                "en-GB" => [
                    "name" => $article->getNames()['E']

                    ]

            ]
        ];

Das Ganze schicke ich dann entsprechend an meinen product- Aufruf

xyz.de/shopware/public/api/product/78937248932FJKDSHFSDJKh

Ich beantworte mir die Frage mal selbst, falls jemand anderes noch darüber stösst.

Im Grunde kinderleicht, bei mir sieht das Ganze jetzt so aus:

"id" => $id,
            'name' => $article->getNames()['D'],
            "productNumber" => $article->getArtNr(),
            "stock" => $article->getAmount(),
            "taxId" => "9829d7c873504a349b98b6bdd3622c51",
            "price" => [ array(
                "currencyId" => "b7d2554b0ce847cd82f3ac9bd1c0dfca",
                "gross" => 2,
                "net" => 2,
                "linked" => false
            )
            ],
            "customFields" => [
                "custom_referenznummern_1" => $article->getRefNr()
            ],
            "active" => true,
            "translations" => [
                "en-GB" => [
                    "name" => $article->getNames()['E']

                    ]

            ]

Dabei ist „custom_referenznummern_1“ der Name des Freitextfeldes (nicht des Sets).

Ganz wichtiger Tipp (der mir nicht bewusst war): In der Console vom Browser findet man unter XHR alle Befehle die benötigt werden. Also einfach im Administrationsbereich von Shopware bspw. im Produkt etwas aktualisieren und schon werden alle Calls inkl. Header / Payload sichtbar.

4 Likes