# Abruf von Bestellungen über API

**URL:** <https://forum.shopware.com/t/abruf-von-bestellungen-ueber-api/101133>\
**Category:** Programmierung\
**Created:** [4. September 2023 um 15:27 UTC](https://forum.shopware.com/t/abruf-von-bestellungen-ueber-api/101133 "2023-09-04T15:27:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lenagiraffe](https://avatars.discourse-cdn.com/v4/letter/l/d26b3c/32.png) [@lenagiraffe](https://forum.shopware.com/u/lenagiraffe)\
**Post date:** [4. September 2023 um 15:27 UTC](https://forum.shopware.com/t/abruf-von-bestellungen-ueber-api/101133/1 "2023-09-04T15:27:03Z")

</div>

Hallo,  
ich versuche per Rest (Post) auf /api/search/order offene Bestellungen in einem bestimmten Status abzuholen. Ich habe mir jetzt einen body zusammengeraten, in dem hoffentlich alle für mich relevanten Informationen vorhanden sind: Bestellnummer, Lieferadresse, Bestellpositionen (Mengen, Artikel). Der Response ist allerdings recht kompliziert zu lesen. Z.B. Muss man, um herauszufinden, welche Adresse die Lieferadresse ist, erst im Feld shippingOrderAddressId nach der ID suchen und anschließend die passende Adresse nehmen. Ähnlich ist es mit dem Verhältnis von Bestellpositionen und Artikeln. Die Bestellposition enthält nur die ArtikelID, weitere Infos muss man dann über die ID suchen.  
Ich frage mich jetzt: Ist es wirklich soooo kompliziert oder habe ich etwas übersehen? Kann man die notwendigen Informationen auch übersichtlicher bekommen? Gibt es irgendwo in der Doku praxistaugliche Beispiele und eine Liste mit Attributen, damit man die Anfragen zusammen bauen kann ohne ständig raten zu müssen?

Viele Grüße  
Susanne

Hier mein Body:

```auto
{
    "associations": {
        "transactions": {
            "associations": {
                "stateMachineState": []
            }
        },
        "addresses": {
            "associations": {
                "country": [],
                "countryState" :[]
            }
        },
        "lineItems": {
            "associations": {
                "product": []
            }
        },
        "deliveries": {
            "associations": {
                "shippingOrderAddress":{}
            }
        },
        "stateMachineState": {}
    },
    "filter": [
        {
            "value": "open",
            "field": "order.stateMachineState.technicalName",
            "type": "equals"
        },
        {
            "value": "paid",
            "field": "transactions.stateMachineState.technicalName",
            "type": "equals"
        },
        {
            "value": "open",
            "field": "deliveries.stateMachineState.technicalName",
            "type": "equals"
        }
    ],
    "includes": {
        "order_transaction": [
            "id",
            "stateMachineState"
        ],
        "order_customer": [
            "email"
        ],
        "order": [
            "id",
            "orderNumber",
            "createdAt",
            "lineItems",
            "billingAddressId",
            "salesChannelId",
            "addresses",
            "deliveries",
            "salesChannelId",
            "salesChannel",
            "stateMachineState",
            "transactions",
            "orderCustomer",
            "shippingTotal"
        ],
        "order_line_item": [
            "id",
            "position",
            "quantity",
            "unitPrice",
            "productId",
            "product"
        ],
        "country": [
            "iso"
        ],
        "product": [
            "productNumber",
            "name"
        ],
        "sales_channel": [
            "id",
            "name",
            "paymentMethodId",
            "paymentMethods"
        ],
        "order_address": [
            "id",
            "firstName",
            "lastName",
            "street",
            "zipcode",
            "city",
            "company",
            "department",
            "countryId",
            "country"
        ],
        "state_machine_state": [
            "id",
            "technicalName"
        ],
        "order_delivery": [
            "id",
            "shippingOrderAddressId",
             "firstName",
            "lastName",
            "street",
            "zipcode",
            "city",
            "company",
            "department",
            "countryId",
            "country"
        ]
    }
}

```

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [6. September 2023 um 07:01 UTC](https://forum.shopware.com/t/abruf-von-bestellungen-ueber-api/101133/2 "2023-09-06T07:01:19Z")

</div>

Die besten praxistauglichen Beispiele findest du im Adminpanel deiner Shopware-Installation, wenn du dir dort die Payloads & Responses im Network-Tab der Browser-DevTools anschaust.

Wenn man eine Bestellung öffnet, sieht die Response aus, wie du sie beschreibst. Im `response.data` sind die IDs und im `response.included` die assoziierten Daten.

Und raten musst du eigentlich auch nicht, ist alles in den API Docs auch genau so dokumentiert:

> **[List with basic information of Order resources. | Admin API](https://shopware.stoplight.io/docs/admin-api/f95b395c5ae73-list-with-basic-information-of-order-resources)**
>
> Available since: 6.0.0.0 Powered by Stoplight.

> **[Reading entities | Admin API](https://shopware.stoplight.io/docs/admin-api/600f678a6f688-reading-entities#search-endpoint)**
>
> The Admin API is designed in such a way that all entities of the system can be read in the same way. Once an entity is registered in the system, it can be written and read via API - this also applies to your custom entities. The appropriate routes......

> **[Order Management | Admin API](https://shopware.stoplight.io/docs/admin-api/fdd24cc76f22d-order-management#retrieve-orders)**
>
> The order resource enables merchants to process orders they receive from customers. Powered by Stoplight.

---

<div class="post-metadata">

**Author:** ![lenagiraffe](https://avatars.discourse-cdn.com/v4/letter/l/d26b3c/32.png) [@lenagiraffe](https://forum.shopware.com/u/lenagiraffe)\
**Post date:** [8. September 2023 um 14:13 UTC](https://forum.shopware.com/t/abruf-von-bestellungen-ueber-api/101133/3 "2023-09-08T14:13:53Z")

</div>

Hallo,  
danke für die Antwort.  
Ich habe jetzt meine oben beschriebene Abfrage genommen und nicht wie zuvor in Postman ausgeführt, sondern mit einem Javatool. Das Ergebnis war positiv überraschend. Allerdings kann ich es mir nicht erklären. Es kommt nämlich ein anderer (schönerer) Responsbody zurück als mit Postman. Die Assisiations sind jetzt sehr schön aufgelöst und stehen da, wo ich sie gerne hätte. Ein Beispiel:  
Im Response von Postman muss man, um auf das Lieferland zu kommen erst im Abschnitt ‚relationships.adresses‘ die AdressId holen, dann im Abschnitt ‚included‘ die Id suchen. Dort findet man dann unter ‚attributes‘ Name, Vorname, Straße, etc. und die countryId. Die nimmt man dann wiederum und sucht unter inlcudes nach dieser Id, um dann dort bei den Attributen das Land zu erfahren.

Ganz anders der Response, wenn ich es mit Java mache.  
Dort gibt es den Abschnitt ‚addresses‘ mit name usw. und direkt dabei auch ein Objekt coutry mit dem gesuchten iso-Code.  
 ![image](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/3X/e/c/ec9ab3432ed9bbf66491896246877c74d1e1cd1e.png)

Jetzt die interessante Frage: Wie kommt der Unterschied zustande? Gibt es irgendeine Option, Header, was auch immer, womit man das JSON umschalten kann?

Viele Grüße  
Susanne

P.S. ich kann leider nur einen Screenshot mitschicken.

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [11. September 2023 um 05:38 UTC](https://forum.shopware.com/t/abruf-von-bestellungen-ueber-api/101133/4 "2023-09-11T05:38:28Z")

</div>

Die Response wird durch den Endpunkt definiert. Es gibt zwei verschiedene Endpunkt-Typen: Store API und Admin Api.

Store-API:  
`/store-api/order`

> **[Fetch a list of orders | Store API](https://shopware.stoplight.io/docs/store-api/ddf040fcf8424-fetch-a-list-of-orders)**
>
> List orders of a customer. Powered by Stoplight.

Admin-API:  
`/api/order`

> **[List with basic information of Order resources. | Admin API](https://shopware.stoplight.io/docs/admin-api/f95b395c5ae73-list-with-basic-information-of-order-resources)**
>
> Available since: 6.0.0.0 Powered by Stoplight.
