Genereller Zugriff auf REST/API

Hallo!

Ich versuche meine ersten Schritte mit Shopware und bin leider am verzweifeln. Irgendwie find ich nicht die richtigen Informationen.
Derzeit möchte ich erstmal einen validen Request an meine Webseite mittels Postman schicken. Aber da geht es schon los.
https://meine-domain.de/api/outh/token liefert mir ständig „no route found“
(auch das ergänzen von „Versionen“ habe ich versucht, obwohl ich nicht weiß, welche Version überhaupt die richtige wäre …) Ach in diesem Zusammenhang: Shopware 6.4.11.1 ist im Einsatz.

Muss ich überhaupt einen Token anfragen? Die entsprechenden Integrationen habe ich mir im Backend generieren lassen. (Macht es einen Unterschied, ob ich das beim User oder bei „Einstellunge => Integration“ mache?)

Wenn ich per Postman die URL https://meine-domain.de/store-api/product aufrufe, dann erhalte ich zumindest die Antwort „Unauthorized“, was Sinn ergibt.

Vielleicht ist mein Ansatz auch komplett falsch. Ich möchte eigentlich in Zukunft Produkte und Kategorien mittels REST/API ändern und Bestellungen auslesen.

Falls jemand mir ein kleines Snippet (php) zur Verfügung stellen kann, wie die „ersten Schritte“ aussehen, fände ich das super.

Vielen lieben Dank
Jens

{
        "client_id": "xxx",
        "client_secret": "xxx",
        "grant_type": "client_credentials"
}

per POST an /api/oauth/token

oauth, nicht outh

$cURL = curl_init();
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cURL, CURLOPT_HTTPHEADER, ["Authorization: Bearer $bearerToken", 'Content-Type: application/json; charset=utf-8']);

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($cURL, CURLOPT_POSTFIELDS, $json);
$result = curl_exec($cURL);
$httpCode = curl_getinfo($cURL, CURLINFO_HTTP_CODE);

Hi, auf der Postmann-Seite gibt es auch Collection für Shopware6, die sind meiner Meinung nach wirklich hilfreich beim Basteln von API-Calls.

Hier mal eine Beispiel-Collection: Postman

Hi!

Das hat mir geholfen. Ich musste zwar noch ein paar Sachen anpassen, aber mit folgendem Code hat es funktioniert. Danke.

	$url = "https://www.xxxxxxxxxxxxxxxxxxx.de";

	$login = [
		"client_id"=>"xxxxxxxxxxxxxxx",
    "client_secret"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "grant_type"=>"client_credentials"
	];

	$json = json_encode($login);

	// Bearer-Token anfragen
	$cURL = curl_init();
	curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($cURL, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
	curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($cURL, CURLOPT_URL, $url."/api/oauth/token");
	curl_setopt($cURL, CURLOPT_CUSTOMREQUEST, 'POST');
	curl_setopt($cURL, CURLOPT_POSTFIELDS, $json);
	$result = json_decode(curl_exec($cURL));
	$bearerToken = $result->access_token;
	
	// Produktliste auslesen
	$cURL = curl_init();
	curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($cURL, CURLOPT_HTTPHEADER, ["Authorization: Bearer $bearerToken", 'Content-Type: application/json; charset=utf-8']);

	curl_setopt($cURL, CURLOPT_URL, $url."/api/product");
	curl_setopt($cURL, CURLOPT_CUSTOMREQUEST, 'GET');
	curl_setopt($cURL, CURLOPT_POSTFIELDS, $json);
	$result = json_decode(curl_exec($cURL));

	// Produkttabelle ausgeben
	echo '<table border="1">';
	foreach ($result->data as $object) {
		echo '<tr><td>'.$object->id.'</td><td>'.$object->attributes->productNumber.'</td><td>'.$object->attributes->name.'</td></tr>';
	}
	echo '</table>';