SW6 API Doku - Wo? Beispiele?

Hallo,

es gibt zwar die API Doku für Developer https://docs.shopware.com/en/shopware-platform-dev-en aber die ist irgendwie nicht vollständig.

Was genau ist nochmal der Unterschied zwischen Admin-API, Store-API und Sales-Channel-API?

Ich sehe dort leider auch kein Beispiel, wie ich einen kompletten Call aufbauen muss, um beispielsweise Produkte abzurufen oder ein Produkt anzulegen.

Wo sehe ich, welche Felder ein “get products” zurückliefert und wo sehe ich, welche Felder ich beim “post product” liefern muss/kann um ein Produkt anzulegen?

hat die Doku nicht mal anders ausgesehen?


EDIT : habe nun dieses Beispiel ausprobiert https://docs.shopware.com/en/shopware-platform-dev-en/how-to/working-with-the-api-and-an-http-client?category=shopware-platform-dev-en/how-to

Im Beispiel werden die Auth-Daten ja in der Plugin-Config angegeben… ich habe dort also die Logindaten eines Admin-Users eingegeben. Ist das korrekt? Wieso wird hier nicht der API-Key aus dem Headless-Sales-Channel genutzt?

Das Beispiel ist wohl nur für die Admin-API ausgelegt… aber wie bekomm ich das für die Sales-Channel-API hin?

mit dem Response kann ich ohnehin nix anfangen … 

<u><strong>$service-&gt;request("GET", "product");</strong></u>

object(GuzzleHttp\Psr7\Response)#3149 (6) {
  ["reasonPhrase":"GuzzleHttp\Psr7\Response":private]=>
  string(2) "OK"
  ["statusCode":"GuzzleHttp\Psr7\Response":private]=>
  int(200)
  ["headers":"GuzzleHttp\Psr7\Response":private]=>
  array(17) {
    ["Date"]=>
    array(1) {
      [0]=>
      string(29) "Wed, 27 May 2020 16:25:39 GMT"
    }
    ["Server"]=>
    array(1) {
      [0]=>
      string(6) "Apache"
    }
    ["Cache-Control"]=>
    array(1) {
      [0]=>
      string(7) "private"
    }
    ["Access-Control-Allow-Origin"]=>
    array(1) {
      [0]=>
      string(1) "*"
    }
    ["Access-Control-Allow-Methods"]=>
    array(1) {
      [0]=>
      string(25) "GET,POST,PUT,PATCH,DELETE"
    }
    ["Access-Control-Allow-Headers"]=>
    array(1) {
      [0]=>
      string(86) "Content-Type,Authorization,sw-context-token,sw-access-key,sw-language-id,sw-version-id"
    }
    ["sw-version-id"]=>
    array(1) {
      [0]=>
      string(0) ""
    }
    ["sw-language-id"]=>
    array(1) {
      [0]=>
      string(0) ""
    }
    ["sw-context-token"]=>
    array(1) {
      [0]=>
      string(0) ""
    }
    ["x-frame-options"]=>
    array(1) {
      [0]=>
      string(4) "deny"
    }
    ["X-Debug-Token"]=>
    array(1) {
      [0]=>
      string(6) "8fa1eb"
    }
    ["X-Debug-Token-Link"]=>
    array(1) {
      [0]=>
      string(38) "http://myshop.de/_profiler/8fa1eb"
    }
    ["X-Robots-Tag"]=>
    array(1) {
      [0]=>
      string(7) "noindex"
    }
    ["X-Symfony-Cache"]=>
    array(1) {
      [0]=>
      string(25) "GET /api/v1/product: miss"
    }
    ["Vary"]=>
    array(1) {
      [0]=>
      string(13) "Authorization"
    }
    ["Transfer-Encoding"]=>
    array(1) {
      [0]=>
      string(7) "chunked"
    }
    ["Content-Type"]=>
    array(1) {
      [0]=>
      string(24) "application/vnd.api+json"
    }
  }
  ["headerNames":"GuzzleHttp\Psr7\Response":private]=>
  array(17) {
    ["date"]=>
    string(4) "Date"
    ["server"]=>
    string(6) "Server"
    ["cache-control"]=>
    string(13) "Cache-Control"
    ["access-control-allow-origin"]=>
    string(27) "Access-Control-Allow-Origin"
    ["access-control-allow-methods"]=>
    string(28) "Access-Control-Allow-Methods"
    ["access-control-allow-headers"]=>
    string(28) "Access-Control-Allow-Headers"
    ["sw-version-id"]=>
    string(13) "sw-version-id"
    ["sw-language-id"]=>
    string(14) "sw-language-id"
    ["sw-context-token"]=>
    string(16) "sw-context-token"
    ["x-frame-options"]=>
    string(15) "x-frame-options"
    ["x-debug-token"]=>
    string(13) "X-Debug-Token"
    ["x-debug-token-link"]=>
    string(18) "X-Debug-Token-Link"
    ["x-robots-tag"]=>
    string(12) "X-Robots-Tag"
    ["x-symfony-cache"]=>
    string(15) "X-Symfony-Cache"
    ["vary"]=>
    string(4) "Vary"
    ["transfer-encoding"]=>
    string(17) "Transfer-Encoding"
    ["content-type"]=>
    string(12) "Content-Type"
  }
  ["protocol":"GuzzleHttp\Psr7\Response":private]=>
  string(3) "1.1"
  ["stream":"GuzzleHttp\Psr7\Response":private]=>
  object(GuzzleHttp\Psr7\Stream)#3401 (7) {
    ["stream":"GuzzleHttp\Psr7\Stream":private]=>
    resource(121) of type (stream)
    ["size":"GuzzleHttp\Psr7\Stream":private]=>
    NULL
    ["seekable":"GuzzleHttp\Psr7\Stream":private]=>
    bool(true)
    ["readable":"GuzzleHttp\Psr7\Stream":private]=>
    bool(true)
    ["writable":"GuzzleHttp\Psr7\Stream":private]=>
    bool(true)
    ["uri":"GuzzleHttp\Psr7\Stream":private]=>
    string(10) "php://temp"
    ["customMetadata":"GuzzleHttp\Psr7\Stream":private]=>
    array(0) {
    }
  }
}

wo sind meine Produkdaten?

das hier funktioniert bei mir nicht, ich rufe es also auf mit http://myshop.de/api/v1/_info/openapi3.json

und erhalte nur einen riesigen JSON Kauderwelsch beginnend mit 

{"code":"0","status":"500","title":"Internal Server Error","detail":"Notice: Uninitialized string offset: 1

 

Hi FloC3,

schau mal hier, vielleicht hilft dir das weiter: https://forum.shopware.com/discussion/comment/271841/#Comment_271841
Wie Shyim dort schon schreibt, könntest du auch:  https://api-doc.friendsofshopware.com/ nutzen.

Gruß

Krispin

@Krispin‍

oh super, danke für den Friends-Of-Shopware Link. Die Übersicht ist klasse.

Jetzt bleibt noch die Frage, wieso ich beim Ausprobieren des Beispiels aus der Doku (siehe oben) so einen komischen Response bekomme und nicht JSON Products?

Hi FloC3,

könnte die gleiche Problematik wie hier sein: https://forum.shopware.com/discussion/68668/6-2-0-swagger-api-v1-info-swagger-html-failed-to-load-api-definition-internal-server-error#latest

Einfach die genannte Datei löschen, dann sollte es funktionieren.

Gruß

Hallo @Gizmo‍,

danke noch für deinen Kommentar, aber ich nutze jetzt den Link von  https://api-doc.friendsofshopware.com/ 

das passt. Muss nicht unnötig im Shop fuhrwerken.

Mein eigentliches Problem is jetzt der komische Response des Calls… weißt du dazu auch was?

Man das kann doch nicht sein dass niemand einen Tipp hat… ich steh hier vor einer unbekannten Wand und es gibt weder vollständige Doku noch sonst was…

wieso ist der Response so?

Dafür, dass du hier immer so große Wellen schlägst, finde ich es erstaunlich, wie du anscheinend recht eigennützig die Netiquette in einem Forum ignorierst. Wenn jeder andere auch seine eigenen Threads pusht, wenn innerhalb von 24 Stunden nicht geantwortet wurde, dann würde das Forum sicherlich ganz anders aussehen… Ich würde dich doch freundlich bitten, dass du zukünftig ein wenig länger auf mögliche Antworten wartest.

Viele Grüße

nichtsdestotrotz hätte ich doch gern eine Antwort…