Varianten aktualisieren über REST API Variants Resource

Ich habe vergeblich versucht angelegte Varianten eines Artikels über die REST API Variants Resource zu aktualisieren. Laut Developer Guide kann das JSON-Variant-Model über PUT an eine URL übergeben werden, die die passende id  oder die ordernumber definiert. Auf diese Weise ist es aber nicht möglich die Varianten zu aktualisieren, die id/ordernumber darf in der URL nicht auftauchen!?

Statt PUT auf: /api/variants /SW10003?useNumberAsId=true ODER /api/variants/3 mit JSON [{“number”:“SW10135”,“inStock”:“102”}]

Funktioniert PUT auf: /api/variants?useNumberAsId=true mit JSON [{“number”:“SW10135”,“inStock”:“102”}]

( Shopware 5.4.6  Build Rev 201807181357)

Hat jemand ähnliche Erfahrungen? Steht das irgendwo in der Dokumentation oder ist das ein Bug in der API?

 

Das ist keine Bug sondern der Batch Modus, mit dem mit einem Request viele Artikel/Varianten auf einmal geändert werden können.

Eine Aktualisierung funktioniert damit, bei mir sogar ohne useNumberAsId=true obwohl trotzdem number für das matchen verwendet wird (das ist für mich eher ein Bug)

Ohne Batch funktioniert: PUT http://localhost/demoshop_3/api/variants/72574

{
	"inStock": 88
}

Mit Batch: PUT http://localhost/demoshop_3/api/articles (“articles” nicht “variants”)
Man übergibt hier (mehrere) Artikel Objekte als Array die mainDetail und variants als Unterelemente enthalten können. Du kannst damit z.B. auch die Kategorie des Hauptartikels ändern.

[
  {
    "mainDetail": {
      "number": "MAIN-DETAIL-NUMBER"
    },
    "variants": [
      {
        "number": "VARIANT-NUMBER-TO-UPDATE-182076",
        "inStock": 99
      }
    ]
  }
]

Wobei ich drauf gekommen bin das man im Batch-Modus am Besten immer die Hauptvariante (mainDetail mit number) mit schickt um den Fehler

A variant with the given order number “…” already exists.

zu vermeiden.

1 „Gefällt mir“