zunächst vielen Dank für Eure schnellen Antworten. Leider helfen die mir aber nicht wirklich weiter:
Der von enerSpace genannte Link ist mir bekannt. Nur leider kann ich da keinen PHP-Codeschnipsel finden, mit dem ich mal schnell / unkompliziert eine Verbindung zur API herstellen kann.
Den Hinweis mit der Swagger Datei kann ich leider auch nicht recht deuten.
Konkret: Ich habe einen Shopware Playground Account mit entsprechender API-Zugangs-ID. Gibt es schon irgendwo eine Beschreibung „für Dummies“ oder eben einen fertigen PHP-Codeschnipsel (Siehe Shopware 5 Rest-Api), mit dem ich eine Verbindung zur API herstellen kann?
Einen fertigen Client speziell gibt es nicht, allerdings kannst du Clients wie Guzzle nutzen. In der Dokumentation findest du dann die einzelnen Routen, sowie möglichen Methoden:
Playground hat aktuell etwa den Stand von Januar/Februar. Da wird es noch einige Zeit dauern, bis das aktualisiert wird - einfach weil wir aktuell den Fokus auf den Early Access von SW6 haben. Wenn du also wirklich SW6 testen willst, solltest du entweder bei den Hosting-Anbietern ein Testpaket nutzen, bspw. hat Shyim auch eine kostenlose Demo: https://sw6.shyim.de/
keine Ahnung, ob das allerdings aktuell ist - oder das lokal aufsetzen.
Da ist dann auch die Swagger-Integration dabei - quasi eine HTML-Seite die dir die einzelnen API-Calls ausgibt. Mit der passenden JSON-Datei davon, kann man dann auch eine API generieren:
Wir bieten ebenso eine kostenlose Demo an, die von uns jede Woche aktualisiert wird. Da kannst du auch nach herzenslust testen: https://shopware6demo.enerspace.de/
@Shyim danke für den Tipp bezüglich Swagger! Das schaue ich mir einmal genauer an.
erstmal vielen Dank für Eure zahlreichen Posts. Vielleicht habe ich mich mit meiner Frage ja auch ein wenig blöd angestellt. Beim Googlen habe ich diese Seite gefunden:
Jedoch funktioniert der Code leider nicht - eine Zeile darunter wird auch (kommentarlos) die Fehlermeldung veröffentlicht.
Ich erhalte den folgenden Error:
{“errors”:[{“code”:“9”,“status”:“401”,“title”:“The resource owner or authorization server denied the request.”,“detail”:“Missing \u0022Authorization\u0022 header”}]}int(1)
Daner nochmals meine Frage: Mit einem simplen CURL Code (siehe oben) kann man noch nicht mal die SalesChannel-API abfragen, für die ja keine oauth2 Authentifizierung notwendig ist?
Klar kann man das - du testest nur einen alten Stand.
Die API heißt mitlerweile auch „sales-channel-api“ und der Authorisation Header „sw-access-key“. Du solltest einfach eine passende Installation nehmen und die offizielle Dokumentation nutzen.
Funktioniert im aktuellen Master einwandfrei. Access-Key aus dem Headless-Sales-Channel und halt meien Testdomain.
Jau das war es - so ein blöder Fehler. Jetzt erhalte ich endlich die gewünschte Ausgabe - super!!!
Mühsam ernährt sich das eichhörnchen
Jetzt kommen natürlich gleich die nächsten Fragen:
Wenn ich ein Produkt abfrage, erhalte ich als Rückgabewert nur der ERSTE Prodkutbild [URL]. Weitere Produktbilder werden mit der API zum jetzigen Zeitpunkt zumindest noch nicht übergeben. Ich gehe davon aus, dass das noch kommt, oder?
Auf die gleiche / ähnliche Art und Weise kann man dann doch bestimmt auch Produktdaten editieren / ändern, oder? Davon steht bislang leider noch nichts in der SalesChannel-API Doku. Ich hoffe, die Doku wird diesbezüglich zeitnah erweitert, oder?
Schau dir noch mal genau die Doku an https://docs.shopware.com/en/shopware-platform-dev-en/api
Grundsätzlich kann man erstmal zwei APIs unterscheiden: Management API zum pflegen von Entitäten, z.B. Produktdaten ändern und die SalesChannel API, die E-Commecre Prozesse abbildet, z.B. Kunden anlegen, etwas in den Warenkorb legen, Bestellung abschließen, etc
Wenn du also ein Produkt über die SalesChannel API abfragst, bekommst du das so wieder gegeben, wie es in diesem SalesChannel ausgespielt werden soll.
Änderungen kann man nur über die Management API machen, für die du wiederum andere Zugangsdaten brauchst.
Das war mir so auch nicht bekannt - wäre ja auch zu einfach, wenn man lediglich mit einer API alles erledigen könnte Aber sei es drum…
Das erklärt aber noch nicht, warum mir die SalesChannel API nur ein Produktbild wieder gibt, wenn im Frontend aber alle Bilder angezeigt werden. Und wenn ich mit der SalesChannel API Kunden anlegen, Bestellungen abschließen ect. kann, ist das auch ein „schreibender Vorgang“.
Generell:
1)
Kann man Produktdaten mit BEIDEN Apis abfragen bzw. ändern? Wenn ja, wo ist die entsprechende Beschreibung in der Management API Doku?
Du hast geschrieben, dass man für die Management API andere Zugangsdaten benötigt. Im Shopware Backend finde ich lediglich die API-Zugangs-ID…? Und kann man die Management API auch über CURL abfragen? Wenn ja, wie müsste man den obigen Code ändern / erweitern?
Die Storefront-API ist für typische Prozesse in der Storefront - da gehört das verändern von Produkten nicht dazu. Du kannst eben eine Storefront abbilden und Bestellungen auslösen. Bspw. für Anbindungen einer App, einer Wordpress-Integration usw. Daher ist das auch ein komplett anderer Authorisierungsprozess.
Die Management API ist eher für PIM-Systeme und ERP-Systeme. Da lassen sich dann alle Bereiche des Shops drüber steuern. Also alles das was du auch im Admin kannst. Da musst du dein CURL Beispiel erweitern und erstmal einen Key anfragen. Kannst dich ja an dem Beispeil aus Patricks Post orientieren und das per CURL umsetzen, da sollten sich alle Informationen adaptieren lassen.
Ist der entsprechende PHP-Code aus Sicherheitsgründen auskommentiert? Da ich keinen Zugang zum friendsofshopware.de Server habe, kann ich das leider nicht selber prüfen.
Curl
Wenn ich Euch richtig verstanden habe, kann man grundsätzlich auch die Management API über CURL ansprechen. Nur muss dann der von mir gepostete Code für die Sales API erweitert bzw. modifiziert werden. Hier noch mal der Code:
Vielleicht gibt es hier ja einen Experten, der das schon gemacht hat, bzw. der den entsprechenden Code parat hat. Wenn das so ist, wäre ich dankbar, wenn der Code hier mal gepostet werden würde. Ich bin mir sicher, dass wäre auch im Interesse vieler anderer Nutzer, die sich mit der Thematik früher oder später auseinander setzen.