Sample code for 30+ languages & platforms
AutoIt

Shopware 6 - Find Product by Name

See more Shopware 6 Examples

Find a product with a given name and get the id.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

$oHttp = ObjCreate("Chilkat.Http")

; Sends the following POST to find the product named "Test123"

; POST /api/v3/search/product
; {
;     "filter": [
;         { "type": "equals", "field": "name", "value": "Test123" }
;     ],
;     "includes": {
;         "product": ["id", "name"]
;     }
; }

; Create the above JSON.
; Use this online tool to generate code from sample JSON:
; Generate Code to Create JSON

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.UpdateString("filter[0].type","equals")
$oJson.UpdateString("filter[0].field","name")
$oJson.UpdateString("filter[0].value","Test123")
$oJson.UpdateString("includes.product[0]","id")
$oJson.UpdateString("includes.product[1]","name")
; 

; Load the access token previously obtained in Shopware 6 OAuth2 Client Credentials
$oJsonToken = ObjCreate("Chilkat.JsonObject")
$oJsonToken.LoadFile("qa_data/tokens/shopware6.json")

; This causes the "Authorization: Bearer <access_token>" header to be added.
$oHttp.AuthToken = $oJsonToken.StringOf("access_token")

; Note: If you get a 401 response status code, then fetch a new access token and retry.
$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpJson("POST","https://my-shopware-6-shop.de/api/v3/search/product",$oJson,"application/json",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

$oSbResponseBody = ObjCreate("Chilkat.StringBuilder")
$oResp.GetBodySb($oSbResponseBody)
$oJResp = ObjCreate("Chilkat.JsonObject")
$oJResp.LoadSb($oSbResponseBody)
$oJResp.EmitCompact = False

ConsoleWrite("Response Body:" & @CRLF)
ConsoleWrite($oJResp.Emit() & @CRLF)

; If we get a 401 response, it may be that our access token expired and we need to fetch a new one.
Local $iRespStatusCode = $oResp.StatusCode
ConsoleWrite("Response Status Code = " & $iRespStatusCode & @CRLF)
If ($iRespStatusCode >= 400) Then
    ConsoleWrite("Response Header:" & @CRLF)
    ConsoleWrite($oResp.Header & @CRLF)
    ConsoleWrite("Failed." & @CRLF)
    Exit
EndIf

; The response looks like this:
; Use the following online tool to generate parsing code from sample JSON:
; Generate Parsing Code from JSON

; {
;   "data": [
;     {
;       "id": "d195dabb53cf46d096bd9a8726d82558",
;       "type": "product",
;       "attributes": {
;         "name": "Test123",
;         "apiAlias": null
;       },
;       "links": {
;         "self": "https:\/\/***.de\/api\/v3\/product\/d195dabb53cf46d096bd9a8726d82558"
;       },
;       "relationships": [
;       ],
;       "meta": null
;     }
;   ],
;   "included": [
;   ],
;   "links": {
;     "self": "https:\/\/***.de\/api\/v3\/search\/product"
;   },
;   "meta": {
;     "totalCountMode": 0,
;     "total": 1
;   },
;   "aggregations": [
;   ]
; }

Local $iNumSearchResults = $oJResp.SizeOfArray("data")
If ($iNumSearchResults <> 1) Then
    ConsoleWrite("numSearchResults = " & $iNumSearchResults & @CRLF)
    ConsoleWrite("Did not find the product, or unexpectedly found more than one with the same name." & @CRLF)
    Exit
EndIf

Local $sProductId = $oJResp.StringOf("data[0].id")

ConsoleWrite("Product ID = " & $sProductId & @CRLF)