# /api/v3/search/category wird nicht gefiltert

**URL:** <https://forum.shopware.com/t/api-v3-search-category-wird-nicht-gefiltert/69976>\
**Category:** Shopware Playground - API first Sandbox\
**Created:** [1. Oktober 2020 um 14:28 UTC](https://forum.shopware.com/t/api-v3-search-category-wird-nicht-gefiltert/69976 "2020-10-01T14:28:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![chapter2](https://avatars.discourse-cdn.com/v4/letter/c/f4b2a3/32.png) [@chapter2](https://forum.shopware.com/u/chapter2)\
**Post date:** [1. Oktober 2020 um 14:28 UTC](https://forum.shopware.com/t/api-v3-search-category-wird-nicht-gefiltert/69976/1 "2020-10-01T14:28:08Z")

</div>

Hallo Liebe Showare-Community,

ich arbeite an einem Import-Tool, dass eine CSV direkt über die API-Schnittstelle in den Shop einspeist.

Final möchte ich der Suche eine Kategorie Hierarchie übergeben (z.B. Rohrsysteme =\> Rohre).  
Je nach Struktur sollen fehlende Kategorien automatisch angelegt und die passende Kategorie-ID als Antwort ausgegeben werden.

Dazu muss ich unter anderem die Produktkategorien finden bzw. neu anlegen. Aktuell liefert mir die API aber stets den **vollständigen** Kategoriebaum zurück - wo liegt das Problem?

```
function doShopwareApiRequest($uri, $method = 'post', $body = null)
{
    // Ja, globals sind nicht optiomal. Der Zweck sollte aber klar sein
	global $base, $client, $accessToken;

	$uri = '/' . ltrim($uri, '/');

	if ($body !== null && !is_string($body)) {
		$body = json_encode($body);

		// Malformed json data
		if ($body === false) {
			return null;
		}
	}

	$request = new \GuzzleHttp\Psr7\Request(
		$method,
		$base . $uri,
		[
			'Authorization' => 'Bearer ' . $accessToken,
			'Accept' => '*/*'
		],
		$body,
	);
	$response = $client->send($request);
	$data = json_decode($response->getBody()->getContents(), true);

	return $data;
}

```

Nach diesem Teil suche ich (erst mal)

```
$searchData = [
	'filter' => [
		[
			'type' => 'contains',
			'field' => 'name',
			'value' => 'Rohr',
		]
	],
];

```

Schließlich wird die Anfrage gesendet:

```
doShopwareApiRequest('/api/v3/search/category', 'post', $searchData);

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![chapter2](https://avatars.discourse-cdn.com/v4/letter/c/f4b2a3/32.png) [@chapter2](https://forum.shopware.com/u/chapter2)\
**Post date:** [1. Oktober 2020 um 17:02 UTC](https://forum.shopware.com/t/api-v3-search-category-wird-nicht-gefiltert/69976/2 "2020-10-01T17:02:53Z")

</div>

Ich habe mir die Mühe gemacht und bin den API-Teil per Debug durchgangen. Der Request-Body in _\GuzzleHttp\Psr7\Request_&nbsp;landet nach dem Beispiel oben **nicht&nbsp;** im _ParameterBag._

Sobald ich auf $client-\>post() wechsel, kommt das erwartete Ergebnis.&nbsp; Außerdem fehlt in diesem Zusammenhang in der Shopware-Doku jeder Hinweis auf den notwendigen ‘form\_params’ - Schlüssel.

```
$response = $client->post($base . $uri, [
	'form_params' => $body, // raw array data
	'headers' => [
		'Authorization' => 'Bearer ' . $accessToken,
		'Accept' => '*/*'
	]
]);

```

&nbsp;
