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)