AutoIt
AutoIt
Shopware 6 - Find Category by Name
See more Shopware 6 Examples
Find a category with a given name and get the id.Chilkat AutoIt Downloads
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 category named "Test123"
; POST /api/v3/search/category
; {
; "filter": [
; { "type": "equals", "field": "name", "value": "Test123" }
; ],
; "includes": {
; "category": ["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.category[0]","id")
$oJson.UpdateString("includes.category[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/category",$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": "89c4131789fd422c8f00cf37bbb83330",
; "type": "category",
; "attributes": {
; "name": "Test123",
; "apiAlias": null
; },
; "links": {
; "self": "https:\/\/***.de\/api\/v3\/category\/89c4131789fd422c8f00cf37bbb83330"
; },
; "relationships": [
; ],
; "meta": null
; }
; ],
; "included": [
; ],
; "links": {
; "self": "https:\/\/***.de\/api\/v3\/search\/category"
; },
; "meta": {
; "totalCountMode": 0,
; "total": 1
; },
; "aggregations": [
; ]
; }
Local $iNumSearchResults = $oJResp.SizeOfArray("data")
If ($iNumSearchResults <> 1) Then
ConsoleWrite("numSearchResults = " & $iNumSearchResults & @CRLF)
ConsoleWrite("Did not find the category, or unexpectedly found more than one with the same name." & @CRLF)
Exit
EndIf
Local $sCategoryId = $oJResp.StringOf("data[0].id")
ConsoleWrite("Category ID = " & $sCategoryId & @CRLF)