Sample code for 30+ languages & platforms
Dart

Shopware 6 - Delete Category

See more Shopware 6 Examples

Delete a category by name.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

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

  final http = CkHttp();

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

  final json = CkJsonObject();
  json.updateString('filter[0].type', 'equals');
  json.updateString('filter[0].field', 'name');
  json.updateString('filter[0].value', 'Test123');
  json.updateString('includes.category[0]', 'id');
  json.updateString('includes.category[1]', 'name');

  // Load the access token previously obtained in Shopware 6 OAuth2 Client Credentials
  final jsonToken = CkJsonObject();
  jsonToken.loadFile('qa_data/tokens/shopware6.json');

  // This causes the "Authorization: Bearer <access_token>" header to be added.
  http.authToken = jsonToken.stringOf('access_token');

  // Note: If you get a 401 response status code, then fetch a new access token and retry.
  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', 'https://my-shopware-6-shop.de/api/v3/search/category', json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final sbResponseBody = CkStringBuilder();
  resp.getBodySb(sbResponseBody);
  final jResp = CkJsonObject();
  jResp.loadSb(sbResponseBody);
  jResp.emitCompact = false;

  print('Response Body:');
  print(jResp.emit());

  // If we get a 401 response, it may be that our access token expired and we need to fetch a new one.
  var respStatusCode = resp.statusCode;
  print('Response Status Code = $respStatusCode');
  if (respStatusCode >= 400) {
    print('Response Header:');
    print(resp.header);
    print('Failed.');
    return;
  }

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

  final numSearchResults = jResp.sizeOfArray('data');
  if (numSearchResults != 1) {
    print('numSearchResults = $numSearchResults');
    print('Did not find the category, or unexpectedly found more than one with the same name.');
    return;
  }

  final categoryId = jResp.stringOf('data[0].id');

  print('Category ID = $categoryId');

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

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

  final sbUrl = CkStringBuilder();
  sbUrl.append('https://my-shopware-6-shop.de/api/v3/category/');
  sbUrl.append(categoryId);

  // If successful (204 response code), then the jsonStr will be empty.
  // Otherwise it will be a JSON error message.
  final String jsonStr;
  try {
    jsonStr = http.quickDeleteStr(sbUrl.getAsString());
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // A 204 status code indicates success.
  respStatusCode = http.lastStatus;
  print('Response status code for DELETE: $respStatusCode');

  // This will be non-empty if an error occurred.
  print(jsonStr);
}