REST-API liefert unvollständige Ergebnisse

Ich mache gerade erste Versuche, shopware-Verkäufe in unser Buchhaltungssystem zu übertragen.
Dazu versuche ich mittels Python-Script die Daten von der REST-API /api/orders zu holen.
In meinen Programmierversuchen wurden mir nicht alle Bestellungen eingeblendet. Da ich also dachte es hätte etwas mit meinem Programm zutun, hab ich das Ganze halt mal über den Browser (Chrome) versucht und mittel CURL über die Kommandozeile. Überall das selbe Ergebnis: Es fehlen Einträge.
Und zwar random - für mich ist keinerlei Muster darin zu erkennen, warum manche Einträge angezeigt werden und andere nicht. Ich bin mit meinem Latein am Ende.

Gibt es irgendeine Einstellung die ich überprüfen kann? Mache ich generell was falsch?

Hast du Beispielcode?

Einfachster Beispielcode ist:

https://„meine-shopdomain“/api/orders - aufgerufen im Browser.
Dies liefert mir nicht die selben Bestellungen die ich im Shopware-Backend sehe.

Edit:
Die unter https://„meine-Shopdomain“/api/orders aufgelisteten Bestellungen gehen bis „id“=9900. Rufe ich händisch https://„meine-Shopdomain“/api/orders/9900 auf, bekomme ich auch diese Bestellung angezeigt. Inkrementiere ich die ID händisch und rufe z.B. https://„meine-Shopdomain“/api/orders/9907 auf, bekomme ich auch neuere Bestellungen angezeigt. Aber ich kann ja auch nicht immer über ALLE IDs drüberiterieren.

Guck mal hier, es gibt ein Limit von 1000 Orders , alle anderen musst du mit offset resp. „start“ holen
https://developers.shopware.com/developers-guide/rest-api/

sowas in der Art: example. com/api/orders&limit=1000&start=1000

1 Like

Oh mann,… ja den Punkt in der Doku habe ich nicht gefunden. Vielen Lieben Dank dafür!
Das löst auf jeden Fall mein grundlegendes Problem.

Hierdurch ergeben sich für mich allerdings unterschiedliche weitere Fragen :smiley:

  1. Gibt es die Möglichkeit die Reihenfolge zu ändern? Also dass die Ausgabe beim neusten Eintrag beginnt?

  2. Die oberste Ebene des JSON hat das Attribut: „total“ - hierbei geh ich davon aus, dass das die Menge aller Einträge in der Orders-Datenbank ist. Ist es sinnvoll einfach ein JSON zu holen, „total“ auszulesen, 1000 abzuziehen und dann neu mit „start“ = „total“-1000 anzufragen? Das schaut irgendwie nicht so elegant aus oder? Auch wenn es vermutlich genau das macht, was ich will :smiley:

Also es gibt noch „sort“ und du kannst auch das datum filtern und vll auch interessant, den bestellstatus.

Wenn du alle Orders, ohne eine Programmschleife zu nutzen, haben willst, am besten die API zur Seite legen und direkt auf die Datenbank gehen.