Amazon Seller Central (SP API) - Abschaltung von Feed-Typen

Sehr geehrte Kunden und Partner,

wir möchten alle Kunden, die das SellerCentral Add-On verwenden darauf hinweisen, dass am 31. März 2025 einige Feed - Typen von Amazon entfernt werden. Dies betrifft die folgenden Feeds:

  • POST_FLAT_FILE_BOOKLOADER_DATA
  • POST_FLAT_FILE_CONVERGENCE_LISTINGS_DATA
  • POST_FLAT_FILE_INVLOADER_DATA
  • POST_FLAT_FILE_LISTINGS_DATA
  • POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA
  • POST_INVENTORY_AVAILABILITY_DATA
  • POST_PRODUCT_DATA
  • POST_PRODUCT_IMAGE_DATA
  • POST_PRODUCT_OVERRIDES_DATA
  • POST_PRODUCT_PRICING_DATA
  • POST_PRODUCT_RELATIONSHIP_DATA
  • POST_UIEE_BOOKLOADER_DATA

(siehe SP-API Deprecations Schedule)

Alle genannten Feeds müssen auf den JSON_LISTINGS_FEED migriert werden.

Folgende Synesty Steps sind von der Abschaltung der Amazon Feeds betroffen und müssen ausgetauscht werden:

  • SellerCentralPriceAndQuantityUpdate(POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA)

  • SellerCentralListingLoader (POST_FLAT_FILE_LISTINGS_DATA)

  • SellerCentralInventoryLoader (POST_FLAT_FILE_INVLOADER_DATA)

  • SellerCentralPriceAndQuantityUpdate (falls der verwendete feedType abgeschaltet wird)
    Falls einer der Feed-Typen ausgewählt ist, wird ab sofort eine Warnung im Eventlog ausgegeben:

Wenn Sie keinen dieser Steps verwenden, muss nichts unternommen werden.

Falls Sie einen der Steps bzw. Feeds verwenden, müssen diese ausgetauscht werden. Die neuen Step Versionen sind im Beta - Add-On verfügbar.

Alter StepNeuer Step
SellerCentralPriceAndQuantityUpdate → SellerCentralListingLoader (v2)
SellerCentralListingLoader → SellerCentralListingLoader (v2)
SellerCentralInventoryLoader → SellerCentralInventoryLoader (v2)

Allgemeine Tips für die Umstellung:

  • Duplizieren und pausieren Sie zunächst den alten Step. So können später die alte Konfiguration des Steps nachvollziehen (siehe auch Dokumentation Stepkonfiguration)
  • Testen Sie die Steps nach der Migration mit einem oder sehr wenigen Produkten(limit-Feld)

SellerCentralListingLoader (v2)

Notwendige Schritte nach dem Austausch der Step Version:

  • Der SellerCentralListingLoader (v2) Step unterstützt nur einen Marktplatz. Der Marktplatz muss neu ausgewählt werden
  • Passen Sie die Titel der Spalten in der Konfiguration des Steps entsprechend des Spalten Mappings des vorher verwendeten Steps an

Spalten Mapping SellerCentralListingLoader

operation-type (Wert = Update) → operation-type = PATCH bzw.
operation-type (Wert = Delete) → operation-type = DELETE

pricepurchasable_offer[0].our_price[0].schedule[0].value_with_tax (purchasable_offer[0].audience = „ALL“)

quantityfulfillment_availability[0].quantity

product-idexternally_assigned_product_identifier[0].value

product-id-typeexternally_assigned_product_identifier[0].type

condition-typecondition_type[0].value

condition-notecondition_note[0].value

ASIN-hintmerchant_suggested_asin[0].value

product-tax-codeproduct_tax_code[0].value

sale-pricepurchasable_offer[0].discounted_price[0].schedule[0].value_with_tax

sale-start-datepurchasable_offer[0].discounted_price[0].schedule[0].start_at

sale-end-datepurchasable_offer[0].discounted_price[0].schedule[0].end_at

leadtime-to-shipfulfillment_availability[0].lead_time_to_ship_max_days

launch-datepurchasable_offer[0].start_at.value

is-giftwrap-availablegift_options[0].can_be_wrapped

is-gift-message-availablegift_options[0].can_be_messaged

fulfillment-center-idfulfillment_availability[0].fulfillment_channel_code


Spalten Mapping SellerCentralPriceAndQuantityUpdate

nicht vorhanden → operation-type = PATCH

pricepurchasable_offer[0].our_price[0].schedule[0].value_with_tax (purchasable_offer[0].audience = „ALL“)

quantityfulfillment_availability[0].quantity

fulfillment-channelfulfillment_availability[0].fulfillment_channel_code

leadtime-to-shipfulfillment_availability[0].lead_time_to_ship_max_days

minimum-seller-allowed-pricepurchasable_offer[0].minimum_seller_allowed_price[0].schedule[0].value_with_tax

maximum-seller-allowed-pricepurchasable_offer[0].maximum_seller_allowed_price[0].schedule[0].value_with_tax

product-tax-codeproduct_tax_code[0].value

business-pricepurchasable_offer[0].audience= "B2B"
purchasable_offer[0].our_price[0].schedule[0].value_with_tax

quantity-price-typepurchasable_offer[0].quantity_discount_plan[0].schedule[0].discount_type

quantity-lower-bound1purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[0].lower_bound (quantity-lower-bound2purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[1].lower_bound, …)

quantity-price1purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[0].value (quantity-lower-price2purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[1].value, …)

national_stock_numbernational_stock_number[0].value

unspsc_codeunspsc_code[0].value

  • In der Konfiguration dürfen nur die Zielspalten des Steps vorhanden sein. Falls Sie z.B. „Hilfsspalten“ für Berechnungen o.ä. verwenden, müssen diese in der erweiterten Einstellung
    removeColumns ausgeschlossen werden

SellerCentralInventoryLoader (v2)

Notwendige Schritte nach dem Austausch der Step Version:

  • Passen Sie die Titel der Spalten in der Konfiguration des Steps entsprechend des Spalten Mappings an

Spalten Mapping SellerCentralInventoryLoader

add-delete (Wert = a) → operation-type = PATCH bzw.
add-delete (Wert = x ) → operation-type = DELETE

product-idexternally_assigned_product_identifier[0].value

product-id-typeexternally_assigned_product_identifier[0].type

pricepurchasable_offer[0].our_price[0].schedule[0].value_with_tax

quantityfulfillment_availability[0].quantity

minimum-seller-allowed-pricepurchasable_offer[0].minimum_seller_allowed_price[0].schedule[0].value_with_tax

maximum-seller-allowed-pricepurchasable_offer[0].maximum_seller_allowed_price[0].schedule[0].value_with_tax

item-conditioncondition_type[0].value

add-delete → operation-type / patch-operation

will-ship-internationallyships_globally[0].value

item-notecondition_note[0].value

fulfillment-center-idfulfillment_availability[0].fulfillment_channel_code

product-tax-codeproduct_tax_code[0].value
leadtime-to-shipfulfillment_availability[0].lead_time_to_ship_max_days
business-pricepurchasable_offer[0].audience = „B2B“
purchasable_offer[0].our_price[0].schedule[0].value_with_tax

quantity-lower-bound1purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[0].lower_bound
(quantity-lower-bound2purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[1].lower_bound, …)

quantity-price1purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[0].value
(quantity-lower-price2purchasable_offer[0].quantity_discount_plan[0].schedule[0].levels[1].value, …)

quantity-price-typepurchasable_offer[0].quantity_discount_plan[0].schedule[0].discount_type

product_tax_codeproduct_tax_code[0].value

national_stock_numbernational_stock_number[0].value

merchant-shipping-group-namemerchant_shipping_group[0].value

handling-timefulfillment_availability[0].lead_time_to_ship_max_days

batteries_requiredbatteries_required[0].value

are_batteries_includedbatteries_included[0].value

battery_cell_compositionbattery[0].cell_composition[0].value

battery_typenum_batteries[0].type

number_of_batteriesnum_batteries[0].quantity

battery_weightbattery[0].weight[0].value

battery_weight_unit_of_measurebattery[0].weight[0].unit

number_of_lithium_ion_cellsnumber_of_lithium_ion_cells[0].value

number_of_lithium_metal_cellsnumber_of_lithium_metal_cells[0].value

lithium_battery_packaginglithium_battery[0].packaging[0].value

lithium_battery_energy_contentlithium_battery[0].energy_content[0].value

lithium_battery_energy_content_unit_of_measurelithium_battery[0].energy_content[0].unit

lithium_battery_weightlithium_battery[0].weight[0].value

lithium_battery_weight_unit_of_measurelithium_battery[0].weight[0].unit

supplier_declared_dg_hz_regulation1supplier_declared_dg_hz_regulation[0].value (supplier_declared_dg_hz_regulation2supplier_declared_dg_hz_regulation[1].value, …)

hazmat_united_nations_regulatory_idhazmat[0].value
(hazmat[0].aspect = „united_nations_regulatory_id“)

safety_data_sheet_urlsafety_data_sheet_url[0].value

item_weightitem_weight[0].value

item_weight_unit_of_measureitem_weight[0].unit

item_volumeitem_volume[0].value

item_volume_unit_of_measureitem_volume[0].unit

flash_pointflash_point[0].value (flash_point[0].unit)

ghs_classification_class1ghs[0].classification.class
(ghs_classification_class2ghs[1].classification.class, …)

list_price[0].value_with_taxlist_price[0].value_with_tax

california_proposition_65_compliance_typecalifornia_proposition_65[0].compliance_type

california_proposition_65_chemical_names1california_proposition_65[0].chemical_names[0] (california_proposition_65_chemical_names2california_proposition_65[0].chemical_names[1], …)

  • In der Konfiguration dürfen nur die Zielspalten des Steps vorhanden sein. Falls Sie z.B. „Hilfsspalten“ für Berechnungen o.ä. verwenden, müssen diese in der erweiterten Einstellung removeColumns ausgeschlossen werden.

Hilfreiche Links

Sollten Sie Fragen zur Umstellung oder Probleme bei der Migration der Steps haben, können Sie sich gerne hier oder per Ticket bei uns melden.

Viele Grüße

Ihr Synesty Team

Hallo @synesty-Torsten,

wir wollen unseren Amazon-Verfügbarkeits-Upload vom Flatfile auf den JSON-Feedtyp umstellen.
Dazu haben wir sowohl den SellerCentralListingLoader-, als auch den SellerCentralInventoryLoader-Step (v2) mit PATCH-Operation getestet.
In beiden Fällen wird der an Amazon übergebene JSON-Feed mit einem Validierungsfehler abgelehnt.

…„issues“:[{„messageId“:1,„code“:„4002008“,„severity“:„ERROR“,„message“:„Die bereitgestellte Nachricht erfüllt nicht die Schemavalidierungsanforderungen für eine Feed-Nachricht.“}]…

Laut JSON_LISTINGS_FEED-Schema sind die Eigenschaften „requirements“ und „attributes“ bei PATCH-Operationen nicht anzuwenden. Der Datentyp NULL ist nicht zulässig.
Desweiteren gilt für die Eigenschaft „op“, dass der Wert „replace“ kleingeschrieben sein muss.

Nachdem ich nun einen entsprechend angepassten JSON-Feed erzeugt habe und ihn via SellerCentralSubmitFeed an Amazon übermittelt habe, lief alles fein.

  • „requirements“: null, ==> raus
  • „attributes“: null, ==> raus
  • „op“: „REPLACE“ ==> „op“: „replace“

Könntet Ihr das bitte in Euren Steps entsprechend anpassen.

Gruß Gero

1 „Gefällt mir“

Hallo Gero,

vielen Dank für die Hinweise. Wir versuchen das schnellstmöglich zu beheben und geben dir dann Bescheid.

VG Torsten

Hallo Gero,

wir haben die beiden Probleme (null Werte & Patch Operation)im SellerCentralListingLoader & im SellerCentralInventoryLoader Step behoben. Kannst du es bitte nochmal versuchen.

Viele Grüße
Torsten

PS. Amazon hat des Datum für die Abschaltung der Feeds noch zwei Monate nach hinten verschoben. Neuer Termin ist jetzt der 30.05.2025 (SP-API Deprecations Schedule)

hello.
WIr sind auch grad an der Umstellung dran. Gemäß der Beschreibung habe ich die Felder angegeben und mit Daten gefüttert. Leider habe ich in der Vorschau des Steps die Fehlermeldung:
4001001=Medieninhalte für URL „“ können nicht abgerufen werden: Ungültige URL angegeben.;4001001=Medieninhalte für URL „“ können nicht abgerufen werden: Ungültige URL angegeben.;4001001=Medieninhalte für URL „“ können nicht abgerufen werden: Ungültige URL angegeben.;4001001=Medieninhalte für URL „“ können nicht abgerufen werden: Ungültige URL angegeben.;4001001=Medieninhalte für URL „“ können nicht abgerufen werden: Ungültige URL angegeben.;4001001=Medieninhalte für URL „“ können nicht abgerufen werden: Ungültige URL angegeben.

Natürlich haben wir in einer Lagerbestandsübermittlung keine Bilder - Gibts hier noch weiteres was es zu beachten gilt?

Eigentlich nutzen wir bei unseren manuellen Uploads bei amazon immer ein partitielles Update. Warum hier patch angegeben werden muss, erschliesst sich mir nicht.

Gut das Amazon sich entschieden hat, das Date zu verschieben :slight_smile:

Viele Grüße in die Runde!

Hallo @Papageien,

Im Normalfall sollten im SellerCentralListingLoader Step keine Medieninhalte als Zielspalten und entsprechend auch nicht Feed vorhanden sein. Um sicherzugehen, kannst du im Mapping alle Zielspalten entfernen, die du nicht benötigst. Du kannst die nicht benötigten Spalten auch über „Alle Spalten bearbeiten“ entfernen.

Zur Fehlermeldung:
Vermutlich hat es nichts mit den Daten zu tun die du im Step setzt. Ich könnte mir vorstellen, dass diese Probleme (leere Urls?) schon am Listing existieren.

Zum Hintergrund:
In der Vorschau wird eine patch bzw. update Validierungsanfrage über die SP API für die ersten 10 Zeilen ausgeführt. Die Fehlermeldung werden direkt von Amazon zurückgeliefert. D.h. wenn am Listing schon vorher Probleme existiert haben, dann kommen diese auch in der Antwort zurück und werden in der Vorschau mit ausgegeben.

Kannst du bitte mal mit dem SellerCentralGetListings Step prüfen, ob die Probleme schon vorhanden sind.
In den erweiterten Einstellungen des Steps kannst du eine einzelne SKU angeben und „Probleme“ auswählen.


Bei den normalen Einstellungen nur den Account und Marktplatz auswählen

Wir haben uns dazu entschieden, den operation-type PATCH als „Standardwert“ im Step zu wählen, da alle Beispiele für partielle Updates, die uns in der SP API Dokumentation über den Weg gelaufen sind mit dieser Operation angegeben sind.

Es gibt neben PATCH auch noch operationType = PARTIAL_UPDATE. Wenn ich es richtig verstanden habe, ist der Unterschied hauptsächlich technischer Natur (die Daten werden im JSON Feed anders angegeben). Du kannst es auch mal mit PARTIAL_UPDATE probieren. Aber am besten immer nur ein (Test-)Produkt verwenden, bis du dir sicher bist, dass alles korrekt importiert wird und keine vorhandenen Werte geleert/gelöscht werden.

„PARTIAL_UPDATE“: indicates only the provided item attributes will be updated with the provided attribute data.
„PATCH“: indicates the provided JSON Patch operations will be used to update the applicable attributes.

(aus selling-partner-api-models/schemas/feeds/listings-feed-message-schema-v2.json at main · amzn/selling-partner-api-models · GitHub)

Das sehe ich auch so :slight_smile: . Die Steps bzw. der JSON Feed sind für uns leider schwer zu testen, da sich die Zielespalten (attribute) pro Kunde / Markplatz / Produkttyp etc. unterscheiden können. Du kannst uns gern Feedback geben, falls du auf weitere Probleme stößt.

Viele Grüße
Torsten

1 „Gefällt mir“

Hallo @synesty-Torsten

vielen Dank für Deine Rückmeldung!

Ich konnte jetzt erst da wieder einsteigen. Ja. Ich hätte den verlinkten SP-API Migrationsleitfaden lesen sollen :frowning: - ich hab das so aufgebaut, wie dort beschrieben. Scheint zu klappen im Test. Ungewöhnlich ist jetzt auch, das im SellerCentral jetzt die Uploadberichte/Ergebnisse in JSON-Format zum downloaden sind anstatt TXT oder XLSX. Im alten Format bekam man in der TXT die SKU und den Fehler angezeigt. Das ist jetzt nur allgemein gehalten.

Ich hab mal den Test mit dem GetListing in einer neuen Gruppe angelegt und Vorschau geladen mit verschiedenen SKUs:
Ein Objekt war unerwartet null. (Cannot invoke „com.amazon.sellingpartner.model.listings_items_api_model_listingsItems_2021_08_01.ItemOffers.iterator()“ because „offers“ is null)
Allerdings ohne die Verlinkung auf ein Spreadsheet.

Der hat die SKU mit dem ListingLoader jedoch hochgeladen.
Der Fehler im SellerCentral bei dem Upload im Test:
„issues“:[{„messageId“:3,„code“:„4000001“,„severity“:„ERROR“,„message“:„Der angegebene Wert für "purchasable_offer" ist ungültig.“,„attributeName“:„purchasable_offer“}

Im JSON wird der korrekt übermittelt: 2.49

Keine Ahnung. Es wird alles abgelehnt.

Aber vielleicht sieht man vor lauter Bäumen den Wald nicht …

Grüßli
Sabine

Hallo Torsten,

vielen Dank für die Anpassung der Steps. Jetzt funktioniert es.
Und entschuldige meine späte Rückmeldung, die letzten zwei Wochen kamen immer vordringliche Dinge dazwischen … :wink:

Freundliche Grüße
Gero

1 „Gefällt mir“

Hallo Sabine,

vielen Dank für dein Feedback!

Das ist leider noch ein Fehler bei uns im SellerCentralGetListings Step. Wir versuchen das Problem schnellstmöglich zu beheben.

Anhand der Fehlermeldung ist es wirklich schwer zu sagen was da nicht korrekt ist. purchasable_offer hat ja noch einige untergeordnete Eigenschaften im JSON. Kannst du uns eventuell den purchasable_offer JSON Teil der SKU mal schicken. Vielleicht kann ich da den Fehler finden.

VG Torsten

Hello @synesty-Torsten
klar. Mach ich gerne. Amazon hat mich in den letzten Jahren viele Nerven gekostet mit deren System.

Hab mal das aus der Vorschau heruntergeladen und unsere ID getauscht. Rest passt aber:

{„header“:{„sellerId“:„XXXXXXXXX“,„version“:„2.0“,„issueLocale“:„de_DE“},„messages“:[{„messageId“:1,„sku“:„H75007“,„operationType“:„PATCH“,„productType“:„PRODUCT“,„patches“:[{„op“:„replace“,„path“:„/attributes/purchasable_offer“,„value“:[{„minimum_seller_allowed_price“:[{„schedule“:[{„value_with_tax“:„“}]}],„currency“:„EUR“,„maximum_seller_allowed_price“:[{„schedule“:[{„value_with_tax“:„“}]}],„our_price“:[{„schedule“:[{„value_with_tax“:2.49}]}]}]},{„op“:„replace“,„path“:„/attributes/fulfillment_availability“,„value“:[{„quantity“:100,„fulfillment_channel_code“:„DEFAULT“,„lead_time_to_ship_max_days“:1}]}]},{„messageId“:2,„sku“:„H78201“,„operationType“:„PATCH“,„productType“:„PRODUCT“,„patches“:[{„op“:„replace“,„path“:„/attributes/purchasable_offer“,„value“:[{„minimum_seller_allowed_price“:[{„schedule“:[{„value_with_tax“:„“}]}],„currency“:„EUR“,„maximum_seller_allowed_price“:[{„schedule“:[{„value_with_tax“:„“}]}],„our_price“:[{„schedule“:[{„value_with_tax“:6.85}]}]}]},{„op“:„replace“,„path“:„/attributes/fulfillment_availability“,„value“:[{„quantity“:120,„fulfillment_channel_code“:„DEFAULT“,„lead_time_to_ship_max_days“:1}]}]}]}

Wenn ich noch unterstützen kann, gerne :slight_smile:

Hat das denn jemand hier schon mal zum laufen bekommen? Würde mich interessieren.

Viele Grüße

Hallo Sabine,

vielen Dank für das Beispiel. Ich denke, dass das Problem durch die leeren ("") Werte bei minimum_seller_allowed_price bzw. maximum_seller_allowed_price verursacht wird.

Eigentlich sollte der Step leere Spalten/Werte nicht im JSON ausgeben. Eventuell ist das noch ein Bug bei numerischen Werten. Ich schau mir das an.

Falls du die Werte nicht setzen willst, kannst du die beiden Spalten im Mapping des SellerCentralListingLoader Steps auch entfernen. Dann sollten die leeren Werte auf alle Fälle nicht mehr im JSON enthalten sein:

Die Spalten haben den Titel:

  • purchasable_offer[0].minimum_seller_allowed_price[0].schedule[0].value_with_tax
  • purchasable_offer[0].maximum_seller_allowed_price[0].schedule[0].value_with_tax

VG Torsten

@synesty-Torsten Ha! jetzt isses tatsächlich durch. Ich bin begeistert :slight_smile:

Die Anbindung ist noch Beta oder? Wir nutzen die 2 Spalten nicht - aber waren ja auch in der ursprünglichen Version enthalten - daher habe ich die übernommen.

Falls ich da unterstützen kann, mach ich das gerne. So lange der „normale“ Upload läuft kann ich hier mit einzelnen Artikeln testen.

Viele Grüße