Gibt es bei der SW6 API ein Parameter useNumberAsId

Ich frage mich ob es bei der SW6 API den Parameter „useNumberAsId“ oder ähnliches gibt.

Wenn nicht, wie macht Ihr so mit Fremdsystem die keine Ahnung von der ShopwareId haben?
Vorher immer eine Abfrage mit der ordernumber um eine Id vom Produkt zu bekommen um dann die Änderungen vorzunehmen?

Hallo,

schau mal hier nach: https://docs.shopware.com/en/shopware-platform-dev-en/api/filter-search-limit?category=shopware-platform-dev-en/api#search

/api/v1/product?productNumber=12345

Edit: Korrekte Antwort weiter unten von realconvis

 

Gruß,

BA

Genau, du musst immer vorher einmal nach der ID suchen anhand der Nummer. Dann kannst du schreiben

Das heißt, wenn ich 1.000 Artikel aus einem externen System aktualisieren möchte, dann muss ich für diese 1.000 Artikel zu erst die interne Shopware ID lesen und kann den Artikel nicht anhand der Artikelnummer identifizieren?

Viele Grüße

@B_A‍  ich finde auf der verlinkten Doku nicht das Codebeispiel von dir. Dein Beispiel funktiniert bei mir nicht. Da bekomme ich ettliche Ergebnisse die nicht passen.

Bei mir funktioniert es nur so

?filter[productNumber]=123456

Kann ich ja aber bei einem Update nicht nutzen.

Also wohl so wie Shyim bestätigte, muss man wohl vorher an die Id kommen um dann schreiben zu können.

1 Like

@realconvis‍ danke für deine Antwort. Such mal in der Doku, die ich verlinkt habe, nach

/api/v1/product?term=searchterm

 

scheint aber nicht zu funktionieren. Evtl. habe ich es eben auch einfach Falsch benutzt.

Wenn du kein zusätzliches Feld in dem externen System benutzten willst um die Shop-Id zu speichern, kannst du deine Artikelnummer hashen und das als Id mit übergeben. Habe andere hier auch schon gemacht und funktionert. Ich habe es so gemacht, dass ich ein Feld für die Shop-Id habe. Wenn dieses leer ist überprüfe ich Anhand der Artikelnummer ob  der Artikel schon im Shop vorhanden ist und setze es danach.

Gruß,

BA

@B_A‍  wie gesagt wenn ich den Filter benutze, komme ich an den Datensatz. Das wäre nicht das Problem.

Der Ansatz wäre aber interessant die Id über die Artikelnummer selber zu erzeugen und mit zugeben. Wusste aber nicht das das geht.
Die Idee wäre aber dann dass das externe System für ein Update oder eine Abfrage die Artikelnummer wieder auf die gleiche Art und Weise wie biem Post/Anlegen verhasht, damit er an den richtigen Datensatz ran kommt? Habe ich das richtig verstanden?

Wie wird sowas verhasht? Kann ja nicht einfach die UUID funktion verwenden, die würde ja immer wieder eine neue ID generieren. Oder nach welchem System werden die Ids in SW6 erzeugt?

Ja, Artikelnummer hashen für Post/Patch. Es ist auch möglich sich eine UUID einfach zu generieren, aber danach kommt man zu dem Problem, dass die ID irgendwo im externen System persistiert werden muss  => sonst muss man wieder einen zusätzlichen Request machen um sich die ID aus dem Shop zu holen.

Ja, SW6 benutzt UUIDs

Ich weiß nicht welche Sprache du benutzt, aber ein Beispiel für Java wäre hier https://mkyong.com/java/java-md5-hashing-example/  zu finden.

Gruß,

BA