Admin API: Relationships im Response JSON erweitern

Hi,
wie kann man den Inhalt der „relationships“ im JSON Response erweitern, so dass deren Inhalt direkt im Response mit angezeigt wird?

Beispiel:
mit GET /api/order/{id}

Befinden sich die relevanten Infos alle in den relationships (Lieferadresse, Rechnungsadresse etc.)

Ich möchte aber nicht für jede Order XX Endpunkte ansprechen, sondern nur einen, um an die relevanten Daten zu kommen.

Mit dem Parameter _response=detail bekomme ich auch nicht mehr Informationen.

Wie komme ich an ein JSON, das alle relevanten Infos inkl. Liefer/Rechnungsadresse enthält?

GET /api/orders/{id} ist der korrekt Endpunkt (nicht /order).
Da ist alles drin.

@AlexGalax Wir sind hier im Shopware 6 Forum.

Hat denn niemand eine Lösung für das Problem?
Es kann doch nicht sein, dass ich 4 Endpunkte ansprechen muss, nur um an die Adressen zu kommen??

Ich bin über jeden Tipp dankbar!

Sorry, mein Fehler.

In Shopware 6 kannst du über die Search API die Associations mit angeben.

POST /api/search/order

So sieht z.B. der Request-Body von Shopware aus:

{
	"associations": {
		"addresses": {
			"associations": {
				"country": {
					"total-count-mode": 1
				},
				"countryState": {
					"total-count-mode": 1
				}
			},
			"total-count-mode": 1
		},
		"currency": {
			"total-count-mode": 1
		},
		"deliveries": {
			"associations": {
				"shippingMethod": {
					"total-count-mode": 1
				},
				"shippingOrderAddress": {
					"total-count-mode": 1
				}
			},
			"sort": [
				{
					"field": "shippingCosts.unitPrice",
					"naturalSorting": false,
					"order": "DESC"
				}
			],
			"total-count-mode": 1
		},
		"documents": {
			"associations": {
				"documentType": {
					"total-count-mode": 1
				}
			},
			"total-count-mode": 1
		},
		"language": {
			"total-count-mode": 1
		},
		"lineItems": {
			"associations": {
				"children": {
					"sort": [
						{
							"field": "label",
							"naturalSorting": true,
							"order": "ASC"
						}
					],
					"total-count-mode": 1
				},
				"product": {
					"total-count-mode": 1
				}
			},
			"filter": [
				{
					"field": "parentId",
					"type": "equals",
					"value": null
				}
			],
			"sort": [
				{
					"field": "position",
					"naturalSorting": false,
					"order": "ASC"
				}
			],
			"total-count-mode": 1
		},
		"orderCustomer": {
			"total-count-mode": 1
		},
		"salesChannel": {
			"total-count-mode": 1
		},
		"tags": {
			"total-count-mode": 1
		},
		"transactions": {
			"associations": {
				"paymentMethod": {
					"total-count-mode": 1
				}
			},
			"sort": [
				{
					"field": "createdAt",
					"naturalSorting": false,
					"order": "ASC"
				}
			],
			"total-count-mode": 1
		}
	},
	"ids": "f956993c77894ce28da1daedc60c7626",
	"limit": 25,
	"page": 1,
	"total-count-mode": 1
}

@AlexGalax Hey, danke dir. Damit bekomme ich schon mehr informationen.
Allerdings werden mir mit

{
	"associations": {
		"addresses": {
			"associations": {
				"country": {
					"total-count-mode": 1
				},
				"countryState": {
					"total-count-mode": 1
				}
			},
			"total-count-mode": 1
		},

…trotzdem keine Adressen angezeigt.
Ich habe keine Infos gefunden, wie man „sämtliche“ Elemente innerhalb von „addresses“ anzeigen kann.
Was muss man „associations“ übergeben, um alles innerhalb von „addresses“ anzuzeigen?

Vielleicht weil Liefer- & Rechnungsadresse gleich sind. Füg mal noch die Assosiation für billingAddress hinzu.

@AlexGalax
dann bekomme ich innerhalb von billingAddress nur die ID der billingAddress, siehe unten. Aber ich will ja die Adresse sehen und nicht die ID.
Vielleicht ist das in SW6 doch nicht möglich, alles anzuzeigen? Und ich muss mit der ID immer die entsprechenden Endpunkte nacheinander abklappern?

	"billingAddress" : 
				{
					"data" : 
					{
						"id" : "78d48538620444e28922f7c0fda65ccd",
						"type" : "order_address"
					},
					"links" : 
					{
						"related" : "https://abc.de/api/order/a6b12e295fd8477582533d7de596e1a9/billing-address"
					}
				},

Poste bitte mal den Request-Body

Hier die einfachste Version zum Anzeigen der Adressen und Line-Items:

{
	"associations" : 
	{
		"billingAddress" : {},
		"deliveries" : {},
		"lineItems" : {}
	}
}

Hab in einem anderen Post die Lösung gefunden.
Es kann folgende Payload verwendet werden, um an die Details zu gelangen:

{
    "associations": {
        "addresses": {
            "associations": {
                "country": []
            }
        },
        "transactions": {
            "associations": {
                "stateMachineState": [],
                "paymentMethod": []
            }
        },
        "salesChannel": {
            "associations": {}
        },
        "deliveries": {
            "associations": {
                "shippingOrderAddress": [],
                "shippingMethod": {
                    "associations": {
                        "deliveryTime": []
                    }
                }
            }
        },
        "orderCustomer": {},
        "lineItems": {
            "associations": {
                "product": []
            }
        }
    },
    "includes": {
        "order": [
            "id",
            "orderNumber",
            "createdAt",
            "lineItems",
            "billingAddressId",
            "salesChannelId",
            "addresses",
            "deliveries",
            "salesChannelId",
            "salesChannel",
            "stateMachineState",
            "transactions",
            "orderCustomer",
            "shippingTotal"
        ],
        "state_machine_state": [
            "id",
            "technicalName"
        ],
        "sales_channel": [
            "id",
            "name"
        ],
        "payment_method": [
            "id",
            "name",
            "formattedHandlerIdentifier"
        ],
        "shipping_method": [
            "id",
            "name",
            "deliveryTimeId",
            "deliveryTime"
        ],
        "order_transaction": [
            "id",
            "stateMachineState",
            "paymentMethodId",
            "paymentMethod"
        ],
        "order_address": [
            "id",
            "firstName",
            "lastName",
            "street",
            "zipcode",
            "city",
            "company",
            "department",
            "countryId",
            "country",
            "phoneNumber"
        ],
        "country": [
            "iso"
        ],
        "order_customer": [
            "email"
        ],
        "order_delivery": [
            "id",
            "shippingOrderAddressId",
            "shippingMethodId",
            "shippingMethod"
        ],
        "order_line_item": [
            "id",
            "position",
            "quantity",
            "unitPrice",
            "productId",
            "product",
            "payload"
        ],
        "product": [
            "productNumber",
            "name"
        ]
    }
}
1 „Gefällt mir“