Hallo zusammen,
ich versuche über die REST API die Texte eines Artikels (name1, description, technicalData, keywords) zu aktualisieren und stoße auf folgendes Problem:
Was ich erwarte laut Doku:
Laut Tutorial „Item data: tutorial road map“ sollen Artikeltexte über folgenden Endpunkt verwaltet werden:
POST/PUT /rest/items/{itemId}/variations/{variationId}/descriptions
Was tatsächlich passiert:
-
PUT /rest/items/{itemId}mit einemtexts-Array im Body:
→ Status 200, aberupdatedAtund alle Textfelder bleiben unverändert. Kein Fehler, aber auch keine Änderung. -
POST /rest/items/{itemId}/variations/{variationId}/descriptionsmit{"lang": "de", "name": "..."}:
→ Status 500 mit folgender Fehlermeldung:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '{itemId}-de' for key 'article_id' (SQL: insert into plenty_article_description (lang, name, article_id) values (de, ..., {itemId}))→ Das deutet darauf hin, dass für diesen Artikel/diese Sprache bereits ein Eintrag existiert und POST hier ungeeignet ist.
-
PUT /rest/items/{itemId}/variations/{variationId}/descriptionsmit demselben Payload:
→ Status 200, leere Antwort{}, aber wieder keine Änderung an den Daten (verifiziert über erneutes GET).
Meine Fragen:
- Wie lautet der aktuell korrekte Endpunkt und die korrekte HTTP-Methode, um
name1,name2,name3,description,technicalDataundkeywordseines Artikels per REST API zu setzen/aktualisieren? - Hat sich der Endpunkt seit dem 2017er-Tutorial geändert?
- Wird eventuell ein zusätzliches Pflichtfeld im Payload erwartet, das bei mir fehlt (z. B. eine ID für den bestehenden Text-Eintrag)?
Mein Setup:
- PlentyONE REST API, Authentifizierung per Login-Token (funktioniert für andere Endpunkte wie Maße, Gewicht, Barcodes, Verkaufspreise einwandfrei)
- Getestete Payload-Varianten:
texts-Array am Item, direktername/name1-Key, mit und ohne vollständigen Datensatz
Ergänzung: Ich habe im Forum einen ähnlichen Fall gefunden („Wareneingang per API buchen“ – PUT liefert 200 OK, aber nichts ändert sich). Scheint also kein Einzelfall bei mir zu sein, sondern ein wiederkehrendes Muster bei bestimmten PUT-Endpunkten. Falls jemand weiß, woran das grundsätzlich liegt (Caching? Fehlendes Pflichtfeld, das stillschweigend ignoriert wird? Berechtigungsproblem, das nicht als Fehler zurückgegeben wird?), wäre ich auch über diesen generellen Hinweis dankbar.
Vielen Dank für jeden Hinweis!