Ich übertrage mittels Sync-API 5400 Artikel in den Shop. Es werden immer 500er Blöcke übertragen. In einem Datenblock kommt es bei zwei Artikeln zu einem Fehler, weshalb letztendlich nur 4900 Artikel im Shop landen. Gibt es eine Möglichkeit diese beiden fehlerhaften Datensätze zu ignorieren so dass 5398 Artikel im Shop landen?
Hallo,
ich habe das gleiche Problem mit der Sync-API - bei mir geht es um Bestände. Ich übergebe 300 Bestands-Updates über den Sync-Befehl, eine der 300 übergebenen Artikelnummern existieren allerdings nicht im Shop und der ganze Block wird nicht importiert. Gibt es einen Header, den man beim Request mitschicken könnte, der den Rollback verhindert?
Besten Dank
Es sollte möglich sein und zwar folgendermaßen:
-
header fail-on-error auf string „false“ setzen.
-
die Ids (oder Artikel etc) in einzelne oder kleinere packete unterteilen.
Das heißt nicht, dass sie einzeln geschickt werden sollen, sonder nur einzelnd verarbeitet.
Beispiel:
Hier ein standart sync request, wenn eine der Kategorien einen fehler wirft wird keine übertragen.
{
"write-category": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-1" },
{ "name": "category-2" },
{ "name": "category-3" },
{ "name": "category-4" },
{ "name": "category-5" },
{ "name": "category-6" }
]
}
}
Wenn man es allerdings so formatiert wird beim fehler nur die jeweilige Kategorie verworfen.
{
"write-category1": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-1" }
]
},
"write-category2": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-2" }
]
},
"write-category3": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-3" }
]
},
"write-category4": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-4" }
]
},
"write-category5": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-5" }
]
},
"write-category6": {
"entity": "category",
"action": "upsert",
"payload": [
{ "name": "category-6" }
]
}
}
Ist natrürlich langsamer
Gruß Felix
Hi,
der Thread ist zwar schon ein paar Tage alt, aber vielleicht kannst Du mir trotzdem helfen. Ich arbeite mich gerade in die Sync API ein, scheitere aber aktuell schon daran, dass ich ein „FRAMEWORK__PRIMARY_KEY_NOT_PROVIDED“ bekomme, obwohl ich im Payload die (Artikel-) ID mitgebe:
(
[write-product] => Array
(
[entity] => product
[action] => upsert
[payload] => Array
(
[0] => Array
(
[id] => 0776A765A7B3449C9012C0F433AFE791
[name] => Tropffläschchen 100 ml blau
)
)
)
)
bzw. als JSON
{
"write-product" : {
"entity" : "product",
"action" : "upsert",
"payload" : [
{ "id" : "0776A765A7B3449C9012C0F433AFE791", "name" : "Tropffl\u00e4schchen 100 ml blau" }
]
}
}
Die Dokumentation ist da leider auch sehr spartanisch. Kannst Du mir einen beispielhaften Payload geben, mit dem ich eine „product“ Entity aktualisieren kann?
Danke
LG
Carsten
Das ist seit Version ~ 6.5 nicht mehr gültig - um das zu verhindern müssen jetzt einzelne Requests versendet werden.