Sample code for 30+ languages & platforms
DataFlex

Shopware 6 - Delete Category

See more Shopware 6 Examples

Delete a category by name.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Variant vJson
    Handle hoJson
    Variant vJson
Token    Handle hoJsonToken
    Variant vResp
    Handle hoResp
    Variant vSbResponseBody
    Handle hoSbResponseBody
    Handle hoJResp
    Integer iRespStatusCode
    Integer iNumSearchResults
    String sCategoryId
    Handle hoSbUrl
    String sJsonStr
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

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

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // 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

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get ComUpdateString Of hoJson "filter[0].type" "equals" To iSuccess
    Get ComUpdateString Of hoJson "filter[0].field" "name" To iSuccess
    Get ComUpdateString Of hoJson "filter[0].value" "Test123" To iSuccess
    Get ComUpdateString Of hoJson "includes.category[0]" "id" To iSuccess
    Get ComUpdateString Of hoJson "includes.category[1]" "name" To iSuccess

    // Load the access token previously obtained in Shopware 6 OAuth2 Client Credentials
    Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
    If (Not(IsComObjectCreated(hoJsonToken))) Begin
        Send CreateComObject of hoJsonToken
    End
    Get ComLoadFile Of hoJsonToken "qa_data/tokens/shopware6.json" To iSuccess

    // This causes the "Authorization: Bearer <access_token>" header to be added.
    Get ComStringOf Of hoJsonToken "access_token" To sTemp1
    Set ComAuthToken Of hoHttp To sTemp1

    // Note: If you get a 401 response status code, then fetch a new access token and retry.
    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoJson to vJson
    Get pvComObject of hoResp to vResp
    Get ComHttpJson Of hoHttp "POST" "https://my-shopware-6-shop.de/api/v3/search/category" vJson "application/json" vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponseBody
    If (Not(IsComObjectCreated(hoSbResponseBody))) Begin
        Send CreateComObject of hoSbResponseBody
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComGetBodySb Of hoResp vSbResponseBody To iSuccess
    Get Create (RefClass(cComChilkatJsonObject)) To hoJResp
    If (Not(IsComObjectCreated(hoJResp))) Begin
        Send CreateComObject of hoJResp
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComLoadSb Of hoJResp vSbResponseBody To iSuccess
    Set ComEmitCompact Of hoJResp To False

    Showln "Response Body:"
    Get ComEmit Of hoJResp To sTemp1
    Showln sTemp1

    // If we get a 401 response, it may be that our access token expired and we need to fetch a new one.
    Get ComStatusCode Of hoResp To iRespStatusCode
    Showln "Response Status Code = " iRespStatusCode
    If (iRespStatusCode >= 400) Begin
        Showln "Response Header:"
        Get ComHeader Of hoResp To sTemp1
        Showln sTemp1
        Showln "Failed."
        Procedure_Return
    End

    // 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": [
    //   ]
    // }

    Get ComSizeOfArray Of hoJResp "data" To iNumSearchResults
    If (iNumSearchResults <> 1) Begin
        Showln "numSearchResults = " iNumSearchResults
        Showln "Did not find the category, or unexpectedly found more than one with the same name."
        Procedure_Return
    End

    Get ComStringOf Of hoJResp "data[0].id" To sCategoryId

    Showln "Category ID = " sCategoryId

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

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

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbUrl
    If (Not(IsComObjectCreated(hoSbUrl))) Begin
        Send CreateComObject of hoSbUrl
    End
    Get ComAppend Of hoSbUrl "https://my-shopware-6-shop.de/api/v3/category/" To iSuccess
    Get ComAppend Of hoSbUrl sCategoryId To iSuccess

    // If successful (204 response code), then the jsonStr will be empty.
    // Otherwise it will be a JSON error message.
    Get ComGetAsString Of hoSbUrl To sTemp1
    Get ComQuickDeleteStr Of hoHttp sTemp1 To sJsonStr
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // A 204 status code indicates success.
    Get ComLastStatus Of hoHttp To iRespStatusCode
    Showln "Response status code for DELETE: " iRespStatusCode

    // This will be non-empty if an error occurred.
    Showln sJsonStr


End_Procedure