# Bestellstatus (order.state) per API ändern

**URL:** https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559
**Category:** Shopware Playground - API first Sandbox
**Created:** [30. Oktober 2020 um 15:06 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559 "2020-10-30T15:06:20Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![Reimers](https://avatars.discourse-cdn.com/v4/letter/r/a88e57/32.png) [@Reimers](https://forum.shopware.com/u/Reimers)
#### Post date: [30. Oktober 2020 um 15:06 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/1 "2020-10-30T15:06:20Z")

</div>

Hallo!

Wie man den Lieferstatus ändert, hat [ansgar](https://forum.shopware.com/discussion/67157/per-api-lieferstatus-einer-bestellung-aendern#latest)&nbsp;schon beschrieben.

Aber wie ändere ich den&nbsp;Bestellstatus?

Laut der “ausführlichen” [Doku](https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/action-routes?category=shopware-platform-dev-en/admin-api-guide) soll es mit einer Action Route folgendermaßen gehen:&nbsp;POST /api/v{version}/\_action/order/{orderId}/state/{transition}

Den “transition” Wert habe ich mir bei [GitHub](https://github.com/shopware/platform/blob/master/src/Core/Checkout/Order/OrderStates.php) raus gesucht.

Meine URI sieht dann so aus:&nbsp;  
PostAsync: https://{MeinShop}/api/v3/\_action/order/{MeineOrderId}/state/in\_progress

Wenn ich hiermit versuche, den Status von “open” auf “in\_progress” zu ändern, erhalte ich den Fehler:&nbsp;500 Internal Server Error

Kann jemand helfen?

Danke!

&nbsp;

---

<div class="post-metadata">

### Author: ![Reimers](https://avatars.discourse-cdn.com/v4/letter/r/a88e57/32.png) [@Reimers](https://forum.shopware.com/u/Reimers)
#### Post date: [7. Dezember 2020 um 12:46 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/2 "2020-12-07T12:46:34Z")

</div>

Aha, “hanshuckebein” hat es erklärt:&nbsp;[Per API Lieferstatus einer Bestellung ändern - Shopware Community Forum](https://forum.shopware.com/discussion/comment/285740/#Comment_285740)&nbsp;Danke noch einmal!

Der Grund ist, “in\_progress” existiert in der Tabelle “state-machine-transition” nicht. Mit “process” z.B. funktioniert es bei mir.

Schade, dass dies in der Doku nicht beschrieben wird. Man verbrät viel Zeit…

---

<div class="post-metadata">

### Author: ![Liverson](https://avatars.discourse-cdn.com/v4/letter/l/b19c9b/32.png) [@Liverson](https://forum.shopware.com/u/Liverson)
#### Post date: [8. Dezember 2020 um 16:29 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/3 "2020-12-08T16:29:20Z")

</div>

irgendwie funzt das nicht, wenn ich z.B. der Orderstatus via API ändern will, bspw:

{meineURL}/api/v3/\_action/order/8793ab3829a04b72b2a02c88904209b4/state/in\_progress

komt folgende Fehlermeldung

&nbsp;

{

„errors“: [

{

„status“: „400“,

„code“: „SYSTEM\_\_ILLEGAL\_STATE\_TRANSITION“,

„title“: „Bad Request“,

„detail“: "Illegal transition „in\_progress“ from state „7e87ade3b8a5449ba81d7d22675d4f34“. Possible transitions are: ",

„meta“: {

„parameters“: {

„transition“: „in\_progress“,

„currentState“: „7e87ade3b8a5449ba81d7d22675d4f34“,

„possibleTransitionsString“: „“,

„possibleTransitions“:

}

}

}

]

}

Die orderStates für die URL müssten doch die sein?&nbsp;[https://github.com/shopware/platform/blob/master/src/Core/Checkout/Order/OrderStates.php](https://github.com/shopware/platform/blob/master/src/Core/Checkout/Order/OrderStates.php)

---

<div class="post-metadata">

### Author: ![Reimers](https://avatars.discourse-cdn.com/v4/letter/r/a88e57/32.png) [@Reimers](https://forum.shopware.com/u/Reimers)
#### Post date: [9. Dezember 2020 um 07:52 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/4 "2020-12-09T07:52:53Z")

</div>

Hallo Liverson,

ja, müsste man meinen. Für die ActionRoutes sind die es aber wohl nicht.  
Die gültigen Werte (_action\_name)_ findet man in der Tabelle /api/v3/state-machine-transition  
und die&nbsp;dazugehörige stateMachineId über den&nbsp;TechnicalName in der Tabelle /api/v3/state-machine.

(So etwas findet man leider nicht in der Doku. Warum auch.&nbsp;So kann man wenigstens Wochen verbraten, um das heraus zu finden…)

---

<div class="post-metadata">

### Author: ![Liverson](https://avatars.discourse-cdn.com/v4/letter/l/b19c9b/32.png) [@Liverson](https://forum.shopware.com/u/Liverson)
#### Post date: [9. Dezember 2020 um 07:55 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/5 "2020-12-09T07:55:51Z")

</div>

Hi, ich habs grade rausgefunden, was das Problem war:  
Man muss die Reihenfolge der Stati beachten, man&nbsp;darf nur immer den nächsten Status machen, also von _open =\> process od. cancel =\> complete od. cancel =\> b. Bed. reopen_

---

<div class="post-metadata">

### Author: ![CallMeAlex](https://avatars.discourse-cdn.com/v4/letter/c/e9a140/32.png) [@CallMeAlex](https://forum.shopware.com/u/CallMeAlex)
#### Post date: [21. Dezember 2020 um 10:48 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/6 "2020-12-21T10:48:58Z")

</div>

Hallo, habe nun das gleiche Probleme bzw. ein anderes. Der Status wird zwar geändert, bekomme aber dennoch ein 500 Fehler zurück.

&nbsp;

```
{
    "errors": [
        {
            "code": "0",
            "status": "500",
            "title": "Internal Server Error",
            "detail": "Call to a member function search() on null"
        }
    ]
}

```

&nbsp;

---

<div class="post-metadata">

### Author: ![Reimers](https://avatars.discourse-cdn.com/v4/letter/r/a88e57/32.png) [@Reimers](https://forum.shopware.com/u/Reimers)
#### Post date: [21. Dezember 2020 um 10:53 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/7 "2020-12-21T10:53:16Z")

</div>

Hallo, wie sieht denn der Aufruf aus?

---

<div class="post-metadata">

### Author: ![CallMeAlex](https://avatars.discourse-cdn.com/v4/letter/c/e9a140/32.png) [@CallMeAlex](https://forum.shopware.com/u/CallMeAlex)
#### Post date: [21. Dezember 2020 um 11:40 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/8 "2020-12-21T11:40:36Z")

</div>

> [@Reimers schrieb:](https://forum.shopware.com/profile/36365/Reimers "Reimers")
> 
> Hallo, wie sieht denn der Aufruf aus?

Mein Aufruf sieht so aus:

```
api/v3/_action/order/46b71ca9dafb45ad9717d82d97b2777c/state/process

```

&nbsp;Je nach Bestellung wenn process ist, wird complete genutzt.

---

<div class="post-metadata">

### Author: ![Liverson](https://avatars.discourse-cdn.com/v4/letter/l/b19c9b/32.png) [@Liverson](https://forum.shopware.com/u/Liverson)
#### Post date: [21. Dezember 2020 um 14:22 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/9 "2020-12-21T14:22:22Z")

</div>

auch gecheckt ob die OrderId 100% korrekt ist?

---

<div class="post-metadata">

### Author: ![CallMeAlex](https://avatars.discourse-cdn.com/v4/letter/c/e9a140/32.png) [@CallMeAlex](https://forum.shopware.com/u/CallMeAlex)
#### Post date: [22. Dezember 2020 um 09:07 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/10 "2020-12-22T09:07:07Z")

</div>

> [@Liverson schrieb:](https://forum.shopware.com/profile/6799/Liverson "Liverson")
> 
> auch gecheckt ob die OrderId 100% korrekt ist?

Ja OrderId war richtig. Fehler aber gefunden, ein Plugin hat die&nbsp;OrderConverter class extended wo die Variable&nbsp;orderAddressRepository als Privat deklariert wurde. Und im Extend wird nicht der Konstruktor der Klass OrderConverter aufgerufen, weshalb die Variable nie gesetzt wurde.

---

<div class="post-metadata">

### Author: ![losewn95](https://avatars.discourse-cdn.com/v4/letter/l/278dde/32.png) [@losewn95](https://forum.shopware.com/u/losewn95)
#### Post date: [16. Juli 2024 um 07:56 UTC](https://forum.shopware.com/t/bestellstatus-order-state-per-api-andern/70559/11 "2024-07-16T07:56:04Z")

</div>

Hi.  
For Shopware 6.4, you can change the order status(STATE) as follows:

```auto
$response = $this->httpClient->request('POST', $this->baseUri . '/api/_action/order/1fcbw914c1374v4df3994g62f861f974c6b/state/process', [
                'headers' => [
                    'Authorization' => 'Bearer ' . $token,
                    'Content-Type' => 'application/json'
                ]
            ]);

```
