Sample code for 30+ languages & platforms
AutoIt

Shopware 6 - Delete Category

See more Shopware 6 Examples

Delete a category by name.

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")

; First, let's search for the category by name because we'll need to know the category's id to delete.

; Sends the following POST

; 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)

; -----------------------------------------------------------------------------------------------
; Delete this category by the given ID.

; We need to send a DELETE request like this:
; DELETE /api/v3/category/5840ff0975ac428ebf7838359e47737f

$oSbUrl = ObjCreate("Chilkat.StringBuilder")
$oSbUrl.Append("https://my-shopware-6-shop.de/api/v3/category/")
$oSbUrl.Append($sCategoryId)

; If successful (204 response code), then the jsonStr will be empty.
; Otherwise it will be a JSON error message.
Local $sJsonStr = $oHttp.QuickDeleteStr($oSbUrl.GetAsString())
If ($oHttp.LastMethodSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

; A 204 status code indicates success.
$iRespStatusCode = $oHttp.LastStatus
ConsoleWrite("Response status code for DELETE: " & $iRespStatusCode & @CRLF)

; This will be non-empty if an error occurred.
ConsoleWrite($sJsonStr & @CRLF)