Encoded SwagQL in JSON

Hi,

für viele Endpoints (z.B. product) gibt es einen GET-Parameter “query”, dort steht “Encoded SwagQL in JSON”, ich denke dass man hier angeben kann welche Daten man gerne in der Response hätte, aber ich finde nichts drüber wie das auszusehen hat, hat da jemand ein Beispiel?

/product?query=???

Danke

Das würde mich auch interressieren! [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍ habt ihr vielleicht ein Beispiel?

scheint wohl keiner zu wissen. Irgendwer muss das doch implementiert haben

Hi betsch,

in der Doku gibt es einen Artikel dazu: https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/reading-entities?category=shopware-platform-dev-en/admin-api-guide (unter dem Punkt „query parameter“)

Gruß

Krispin

@Krispin schrieb:

Hi betsch,

in der Doku gibt es einen Artikel dazu: https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/reading-entities?category=shopware-platform-dev-en/admin-api-guide (unter dem Punkt „query parameter“)

Gruß

Krispin

Hallo Krispin,

das worauf du verweist ist ein query-Parameter im POST-Request der Search API, was ich meine ist z.B. der GET-Request beim product-Endpoint:

Muss also irgendwie so aussehen: GET /product?query=whatever

Gruß,

betsch 

Hi betsch,

ich habe nochmal nachgeforscht (bzw. einen Kollegen gefragt). Hier kann wie beim POST das Ergebnis filtern. Zum Beispiel:
Als ganzer String: ?query[0][query][type]=equals&query[0][query][field]=productNumber&query[0][query][value]=SW10216.1

Auseinander gebaut, somit ein EqualsFilter auf productNumber mit dem Value “SW10216.1”.

Ich hoffe das hilft dir soweit weiter.

Gruß

Krispin

@Krispin schrieb:

Hi betsch,

ich habe nochmal nachgeforscht (bzw. einen Kollegen gefragt). Hier kann wie beim POST das Ergebnis filtern. Zum Beispiel:
Als ganzer String: ?query[0][query][type]=equals&query[0][query][field]=productNumber&query[0][query][value]=SW10216.1

Auseinander gebaut, somit ein EqualsFilter auf productNumber mit dem Value „SW10216.1“.

Ich hoffe das hilft dir soweit weiter.

Gruß

Krispin

Hallo Krispin,

ich frage mich dann was das ganze mit „SwagQL“ zutun hat?

Ich bin davon ausgegangen, dass man hier eine Art GraphQL-Query übergeben kann (dass SwagQL eine Anlehnung an GraphQL ist) und dann nur die Infos zurück bekommt die im Query stecken, bei deinem Beispiel würde ich ja alle Attribute für das Produkt „SW10216.1“ zurück bekommen.

In etwa so habe ich mir das vorgestellt:

Request: POST /product?query={ product(productNumber: „SW10216.1“) { price.net, price.gross } }

Response: { „data“: „product“: { „price“: { „net“: 123.00", „gross“: 150.00 } } }

Dass ich also nicht alles zurück bekomme sondern nur das was ich über das Produkt wissen will, in diesem Fall Brutto- und Nettopreis

Gruß

betsch

 

 

Hallo zusammen,

ich muss diesen Post leider nochmal ausgraben.

Und zwar versuche ich aktuell via API die Crossseller zu definieren. Bevor er einen neuen anlegt soll quasi geprüft werden ob nicht evtl. schon diese Zuweisung existiert.

Da es hier ja nun 2 Parameter sind nach denen gefiltern werden soll (ProductId und CrossSellerId) bin ich mir nicht sicher ob die Zusammenstellung des Request für den GET-Parameter so stimmt.

/api/v3/product-cross-selling-assigned-products?query[0][query][type]=equals&query[0][query][field]=crossSellingId&query[0][query][value]=791dcb12b91545bf849a672d507f37f9&query[1][query][type]=equals&query[1][query][field]=productId&query[1][query][value]=61a813fc5297498aaaacf4fda3c45ce0

Hier findet er nun in den Assigned CrossSellings folgende Id: 324f37752ecf4fecab9b94f5a7cbf947

Leider findet er mit folgendem Request und einer anderen ProductId die gleiche Id für die Assigned CrossSellings. Hier müsste er ja keine finden da dieser Eintrag für dieses Produkt nicht existiert.

/api/v3/product-cross-selling-assigned-products?query[0][query][type]=equals&query[0][query][field]=crossSellingId&query[0][query][value]=791dcb12b91545bf849a672d507f37f9&query[1][query][type]=equals&query[1][query][field]=productId&query[1][query][value]=6718f2ef9ff94c08a1c7e2494172b62f

Die Frage hier ist nun - ist mein Vorgehen mit query[1] für den zweiten Parameter richtig oder wie müsste dies dann aussehen? Habe auch schon andere Schreibweisen getestet inkl. eines Request nach folgendem Schema (dieser ist allerdings falsch, da hier überhaupt keine Id gefunden wird).

/api/v3/product-cross-selling-assigned-products?
query[0][type]=multi
&query[0][operator]=AND
&query[0][queries][0][type]=equals
&query[0][queries][0][field]=crossSellingId
&query[0][queries][0][value]=6316f518c5c34a2f98c8cceffff01185
&query[0][queries][1][type]=equals
&query[0][queries][1][field]=productId
&query[0][queries][1][value]=61a813fc5297498aaaacf4fda3c45ce0

Schon mal vielen Dank und viele Grüße

Alex

Benutzt am besten Post und benutzt die JSON Variante. Ist viel übersichtlicher. Beispiele findest du hier Shopware 6: DAL references