API Varianten Erstellung

Guten Tag,

ist es möglich über die API Varianten zu Produkten hinzuzufügen? Bei bisherigen experimenten ist es mir gelungen mit folgendem kleinem JSON Body innnerhalb eines POST Requests Produkte hinzuzufügen. 

{
  "stock": 100,
  "manufacturerId":"e1885791a940402b9e51589a88035275",
  "taxId":"a02b320773414fc58f962fd48c1e7e5e",
  "price": {
    "net": 480.672268907563,
    "gross": 572.0,
    "linked": false
  },
  "productNumber":"SW234567",
  "name":"TestProduct4",
  "createdAt": null,
  "readOnly": true,
  "updatedAt": null
}

Kann ich in diesem Format irgendwie direkt Varianten dazu erstellen? 

Ich habe mir mal testweise ein Produkt über die API "„gegettet“. Dann habe ich über die Administration Varianten hinzugefügt und das Produkt nochmal gegettet. Als einziges diff war das updatetAt Feld vorhanden, deshalb frage ich hier nochmal. Ich habe zumindest keinen direkten Ansatz wo die Varianten abgelegt werden und wäre über jede Hilfe Dankbar :slight_smile: .

 

Ah und als kleiner Anhang, kann ich auch referenzen zu Media Files direkt mitgeben? Es gibt zwar ein media feld das man im Product direkt mitgeben kann, allerdings sehe ich da bisher nur verlinkungen auf /products/{id}/media was nicht wirklich weiter hilft.

1 Like

Push :frowning: .

Mittlerweile habe ich rausgefunden das ich eine „parentId“ mitgeben kann. Dadurch wird das Produkt dann schon halb als variante angelegt, allerdings fehlt mir noch etwas glaube ich. 

Was muss ich noch mitgeben damit dort unter „Variante“ auch eine klickbare Caption dabei ist? 

Hi,
dafür musst du noch die dazugehörigen Options und Option-Groups angeben.
Am besten kannst du dir mal eine per Admin erstellte Variante per API anschauen, dann weißt du wie die Struktur genau aus zu sehen hat.

Gruß

Krispin

@pbAndi‍ bist du schon weitergekommen? Ich hänge am selben Problem. Die Options habe ich entsprechend mitgegeben:

{
    "options": [{
        "groupId": "a230d1ddba6d427c9a5c936fd2748fdd",
        "name": "coral"
    }]
}

Die Varianten werden im Backend auch richtig angelegt:

allerdings kann ich den Artikel im Frontend nicht aufrufen:

Von der Fehlermeldung würde ich tippen, dass der Variantenkonfiguration noch eine Sortierung fehlt (auch wenn ich im Backend auf “Storefront presentation” klicke, wo normal diese Konfiguration angelegt wird, krieg ich nur den Ladekringel, aber es läuft kein Request im Hintergrund). Wie kann man diese mitgeben?

Hast du dir mal im Netzwerktab des Admins angeschaut, wie der API-Request vom Admin selbst aussieht? Dann sollte sich das ja klären können.

Hi,

das sieht für mich so aus, als ob du das Feld “configuratorSettings” am Produkt noch nicht gefüllt hast.
Schau dir ggf. mal die “ProductDefinition” an, dort findest du alle Felder die am Produkt hängen und kannst schauen, welche Felder für die anderen Abhängigkeiten von Nöten sind.

Gruß

Krispin

Für alle die hier drüber stolpern: Die Lösung ist bei mir, dass die Optionen in den Varianten nicht nur in den “properties” gepflegt werden müssen (die die Eigenschaften steueren, die ja letztendlich die Varianten bilden), sondern zusätzlich noch im key “options” (die sind für das Varianten-Modell da).

1 Like

Gibt es auch ein gesamtes Beispiel? Ich versuche mich an den Varianten, aber das Frontend streikt noch (mit der oberen Fehlermeldung).
Ich habe in den Varianten folgendes mitgegeben:

  ["parentId"]=>
  string(32) "a225437e5b3b4d5d91000736d15f73bd"
  ["options"]=>
  array(1) {
    [0]=>
    array(2) {
      ["id"]=>
      string(32) "a5b43bd3908f47dbbda3a1a6d8ade427"
      ["groupId"]=>
      string(32) "f89d61e209a54d14946ce1a12726d173"
    }
  }
  ["configuratorOptions"]=>
  array(2) {
    ["productId"]=>
    string(32) "a225437e5b3b4d5d91000736d15f73bd"
    ["optionId"]=>
    string(32) "a5b43bd3908f47dbbda3a1a6d8ade427"
  }

Das klappt leider noch nicht.
Im Admin sieht der Artikel gut aus, im Frontend leider nicht - irgendetwas fehlt.
Der log sagt nur nichts, weil kein Fehler geworfen wird.

Schöne Grüße,
Niklas

Hi zusammen, 

hat da einer einer Idee, habe auch das Problem “Im Admin sieht der Artikel gut aus, im Frontend leider nicht - irgendetwas fehlt.” 

Im “product” sieht eine Artikel aus der Api gleich dem manuell erstelltem aus, inkl. Varanten. Doch werden nur die in Shopware erstellten Varianten angezeigt.

Beide nutzen die gleichen Eigenschaften. 

    

Gruß Jörg Rosenbaum

Ich gaube mich daran zu erinnern, dass man generierte Varianten persisten muss oder so. Aber eigtl ist es immer das selbe Spielchen: Im Admin Breich Varianten generieren und im Netzwerktab die Requests beobachten und schon findet man selbst die Lösung :wink:

@JROBFN schrieb:

Hi zusammen, 

hat da einer einer Idee, habe auch das Problem „Im Admin sieht der Artikel gut aus, im Frontend leider nicht - irgendetwas fehlt.“ 

Im „product“ sieht eine Artikel aus der Api gleich dem manuell erstelltem aus, inkl. Varanten. Doch werden nur die in Shopware erstellten Varianten angezeigt.

Beide nutzen die gleichen Eigenschaften. 

    

Gruß Jörg Rosenbaum

Folgende (Test-)Aufrufe habe ich mir zusammengebastelt, damit kann ich zwei Varianten und das Klammerprodukt anlegen. Den Request setze ich dann jeweils über http://[SERVER]/api/v3/_action/sync ab.

Klammerprodukt :

{
  "write-Product": {
    "entity": "product",
    "action": "upsert",
    "payload": [
        {
            "id":"4eb5845b52f44b59ad8744f82c0cff55",
            "name" : "testX-Varianten",
            "productNumber" : "test_post_1",
            "stock" : 10,
            "price" : [
                {
                    "currencyId" : "b7d2554b0ce847cd82f3ac9bd1c0dfca", 
                    "gross": 15, 
                    "net": 10, 
                    "linked" : false
                }
            ],
            "taxId" : "003b74cb4c6b4f0b8f4011586c5bff5f",
            "configuratorGroupConfig": [
                {
                    "id": "5eb85799b5914547adf6348ff2213d5e",
                    "representation": "box",
                    "expressionForListings": false
                }
            ],
            "configuratorSettings": [
                {
                    "optionId": "1ce5af1037ec42d6baf1d34f154f7e92"
                },
                {
                    "optionId": "f7486f4573cb41a7afbdab09b6b0d250"
                }
            ]
        }
    ]
  }
}

  

Variante 1 :

{
  "write-Product": {
    "entity": "product",
    "action": "upsert",
    "payload": [
        {
            "id":"65ecc128dd1b482bb5e48a5d3f493fba",
            "name" : "testX-Variante-1",
            "productNumber" : "test_post_1_1",
            "parentId":"4eb5845b52f44b59ad8744f82c0cff55",
            "options":[{"id":"f7486f4573cb41a7afbdab09b6b0d250"}],
            "stock" : 10
        }
    ]
  }
}

 

Und Variante 2 :

{
  "write-Product": {
    "entity": "product",
    "action": "upsert",
    "payload": [
        {
            "id":"b4610d2873d64d62b133e981ee14ef65",
            "name" : "testX-Variante-2",
            "productNumber" : "test_post_1_2",
            "parentId":"4eb5845b52f44b59ad8744f82c0cff55",
            "options":[{"id":"1ce5af1037ec42d6baf1d34f154f7e92"}],
            "stock" : 10
        }
    ]
  }
}

Viel Erfolg!

2 Likes

Hierbei habe ich allerdings das Problem, dass die configuratorSettings des Parent-Produktes nicht ersetzt werden, sondern erweitert. Bei jedem API-Aufruf kommen die mitgegebenen Objekte mit optionId hinzu. Das ist mir jetzt erst aufgefallen und manche Parent-Produkte haben jetzt hunderte dieser configuratorSettings drin, obwohl es eigentlich nur wenige verschiedene Options sind.

Wie kann man diese überschreiben?

Habe ich noch nicht getestet. 
Eventuell muss dann zu jeder optionIn der configuratorSettings eine id mitgeben werden. Ich denke, dass ohne id jedes mal einen neuen Datensatz mit der gleichbleibenden optionId angelegt wird. 
Also beim ersten Anlegen des Parents eine id für jede optionId erzeugen und diese bei jedem Aufruf mitgeben. 

Hey Leute, gibt es zum Thema Varianten erstellen über die API schon etwas neues? Habe es folgendermaßen probiert, aber leider ohne Erfolg:

  1. Produkt erstellt
  2. Patch auf die productId (grün)
    Mit den configurator Settings als payload, mit den property-group-options Id’s (rot)
    Ich bekomme ein 200 Ok zurück, aber ich sehe weder in der Administration Varianten, noch im Frontend.
    Kann mir da jemand weiterhelfen? :thinking:

Wie müssen denn die ConfiguratorSettings für mehrdimensionale Varianten aussehen?