API -Bestell, Zahlungs- und Lieferstatus von Bestellung auslesen

Ich habe leider die Logik hinter den Stati in der API noch nicht durchschaut (StateMachine, StateMachineState, StateMachineStateHistory).

Für einen Abgleich der Bestellungen in unser ERP will ich zusätzlich zu den Bestelldaten (Preis, LineItems) auch jeweils den aktuellen Status der Bestellung, Bezahlung und Lieferung holen.
Genauer gesagt fehlt mir die Verknüpfung der Stati zu einer spezifischen Bestellung.
In einer Bestellung (z.B. über Route /api/v3/order/48f65153d5af462686a102a5e813766e) sehe ich nur das Property “stateId” aber mehr nicht. Wie komme ich da auf die 3 aktuellen Statuswerte der Bestellung?

Vermutlich stehe ich am Schlauch daher wäre ich über einen “Schubsa” sehr dankbar.

Also wir machen das so (es geht vielleicht einfacher wenn man beim holen der Bestellungen mit „Associations“ noch gleich weitere Daten holt…

  1. /search/order

-> Suche mit der OrderNumber gibt uns hier die Bestellung

  1. /customer

-> Gibt uns die Kundendetails zu der Bestellung

  1. /order/ORDERID/transaktions

-> Gibt uns den Bezahlstatus

1 „Gefällt mir“

Danke für deine Antwort die mich jetzt in die richtige Richtung gebracht hat.

Hab mir jetzt den Request so zusammen gebaut das ich möglichst alles auf einmal bereits bekomme.
Als Key für in den associations Properties ist jeweils der Key aus relationships zu verwenden.

POST /api/v3/search/order
Body:

{
    "filter": [
        {
            "type": "equals",
            "field": "orderNumber",
            "value": 10001
        }
    ],
    "associations": {
        "orderCustomer": {
            "associations": {
                "customer": {},
                "salutation": {}
            }
        },
        "transactions": {
            "associations": {
                "paymentMethod": {}
            }
        },
        "deliveries": {},
        "addresses": {
            "associations": {
                "country": {}
            }
        },
        "lineItems": {
            "associations": {
                "product": {}
            }
        }
    },
    "includes": {
        "order_customer": ["customerId", "customerNumber", "email", "salutationId", "title", "firstName", "lastName", "createdAt", "updatedAt"],
        "country": ["name", "iso", "iso3"]
    }
}

Zu finden sind die zusätzlich geladenen Daten in der Response unter dem Property included.
Mit dem includes Property kann man die Felder einschränken das ich im Beispiel mal angeführt habe als Anhaltspunkt für andere die das vielleicht auch brauchen.

Freut mich dass ich helfen konnte und freut mich noch mehr dass du hier gleich ne Musterlösung präsentierst!

Die Shopware API mag wühl für Leute die jeden Tag seit 5 Jahren nur mit APIs arbeiten vollkommen klar und logisch und selbsterklärend sein, aber ich freu mich über jedes bisschen Dokumentation!