Admin-Api und Asscociations – nur bestimmte Felder ausgeben

Hi,

kann mir jemand sagen, wie ich Bestellungen inkl. diverser asscociations auf die für uns notwendigen Datenfelder einschränken kann.

Mit includes wie das im Beispiel in der Doku für die Association steht funzt das nicht.

Beispiel:
hier habe ich versucht die lineItems lediglich auf id, label und quantity zu beschränken, er wirft mir aber immer alle Daten dazu aus. Auch die anderen Asscociations würde ich gerne auf das notwendigste reduzieren.

POST /api/v1/search/order

{
    "ids": [
        "7a7c4add99cf49edad7eccc950e93563"
    ],
    "associations": {
        "lineItems": {},
        "addresses": {},
        "deliveries": {},
        "transactions": {}
    },
    "includes": { 
        "lineItems": ["id", "label", "quantity"] 
    }
}

 

Hi Liverson,

du musst bei dem includes den Entitätsnamen angeben, um die Felder einzuschränken (siehe https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/reading-entities?category=shopware-platform-dev-en/admin-api-guide). In deinem Beispiel wäre es “order_line_item” und nicht “lineItems”.

{
    "ids": [
        "7a7c4add99cf49edad7eccc950e93563"
    ],
    "associations": {
        "lineItems": {},
        "addresses": {},
        "deliveries": {},
        "transactions": {}
    },
    "includes": { 
        "order_line_item": ["id", "label", "quantity"]
    }
}

Gruß

Krispin

1 Like

prima, thats it! dachte man muss die Entität wie in der Asscoiation angeben. Das kommt bei der Doku nicht raus, weil da “product” verwendet wird und die Tabelle in der DB gleichlautend ist.

Lassen sich auch “associations” innerhalb einer “association” abfragen? Das ist mir nicht gelungen 

Bsp:

{
    "ids": [
        "7a7c4add99cf49edad7eccc950e93563"
    ],
    "associations": {
        "lineItems": {},
        "addresses": {
          "associations": {"salutation"}
        }
    },
    "includes": { 
        "order_line_item": ["id", "label", "quantity"],
        "order_address": ["id", "company", "salutationId", "firstName", "lastName", "street", "zipcode", "city", "countryId"]
    }
}

 

Hi Liverson,

du musst auch noch die Salutation ins include mitnehmen, sonst wird es nicht mit geladen:

{
    "ids": [
        "7a7c4add99cf49edad7eccc950e93563"
    ],
    "associations": {
        "lineItems": {},
        "addresses": {
          "associations": { 
          	"salutation": {}
          }
        }
    },
    "includes": { 
        "order_line_item": ["id", "label", "quantity"],
        "order_address": ["id", "company", "salutationId", "firstName", "lastName", "street", "zipcode", "city", "countryId", "salutation"]
    }
}

Btw. die Entitäts-Bezeichnung für die includes wird auch in der Doku erklärt:

The includes parameter is defined as an object. The key is always defined as the api alias of an object. The alias of an object is unique in the system. For entities, this is the entity name: productproduct_manufacturerorder_line_item, … 

Gruß

Krispin

Hmmm… da kommt aber dann auch der String für die Anrede nirgends raus im Response, nur die salutationId und Link zu weiterem Request

Ich wollte halt gleich wissen ist die Anrede Mr. oder Mrs., damit ich deshalb nicht noch einen Extra-Request bspw: “/api/v1/order-customer/36a7a2c858294cd598f2ff0c52df7219/salutation” machen muss

Das Ziel wäre halt alle benötigten Daten zur Übergabe ins ERP in einem Request zu erhalten.

Viele Grüße
Oliver