# API: Setzen des Verkaufskanals (Sales-Channels) für ein Produkt

**URL:** <https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872>\
**Category:** Programmierung\
**Created:** [20. Februar 2020 um 12:59 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872 "2020-02-20T12:59:39Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Lukashwm](https://avatars.discourse-cdn.com/v4/letter/l/49beb7/32.png) [@Lukashwm](https://forum.shopware.com/u/Lukashwm)\
**Post date:** [20. Februar 2020 um 12:59 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/1 "2020-02-20T12:59:39Z")

</div>

Moin,

ich habe unser PIM an SW6 per API angebunden und was mir jetzt noch fehlt ist die Möglichkeit beim Übertragen des Produkts gleich den Verkaufskanal für dieses Produkt zu setzen.

Gefunden habe ich, dass ich mit folgendem Link die SalesChannelId, wenn denn eine gesetzt ist, und dem Typ: GET die Daten auslesen kann, meine Frage ist&nbsp;nun wie mein Body aussehen muss und welcher&nbsp;API Endpunkt verwendet werden kann um den Verkaufskanal zu setzen. Vorzugsweise wäre es schön, wenn dies direkt über&nbsp;[http://url-zum-shop.de/api/v1/product/](http://sw.buchsen-gleitlager-shop.de/api/v1/product/af6e58d054ea45929a4eb0ab4aed2bc6/visibilities)&nbsp;funktionieren kann um mir einen Request zu sparen, da unsere Produktsets recht groß sind.

Link:&nbsp;[http://url-zum-shop.de/api/v1/product/af6e58d054ea45929a4eb0ab4aed2bc6/visibilities](http://sw.buchsen-gleitlager-shop.de/api/v1/product/af6e58d054ea45929a4eb0ab4aed2bc6/visibilities)

&nbsp;

Gruß,

Lukas

&nbsp;

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [24. Februar 2020 um 12:14 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/2 "2020-02-24T12:14:14Z")

</div>

Du kannst jedem Payload das Feld `visibilities` mitgeben:

```
'visibilities' => [
    [
        'id' => 'visibilityID',
        'salesChannelID' => '02F...'
        'visibility' => ProductVisibilityDefinition::VISIBILITY_ALL
    ]
]

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![Lukashwm](https://avatars.discourse-cdn.com/v4/letter/l/49beb7/32.png) [@Lukashwm](https://forum.shopware.com/u/Lukashwm)\
**Post date:** [24. Februar 2020 um 13:16 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/3 "2020-02-24T13:16:49Z")

</div>

> [@AlexGalax schrieb:](https://forum.shopware.com/profile/3059/AlexGalax "AlexGalax")
> 
> Du kannst jedem Payload das Feld `visibilities` mitgeben:
> 
> ‚visibilities‘ =\> [  
> [  
> ‚id‘ =\> ‚visibilityID‘,  
> ‚salesChannelID‘ =\> ‚02F…‘  
> ‚visibility‘ =\> ProductVisibilityDefinition::VISIBILITY\_ALL  
> ]  
> ]
> 
> &nbsp;

Vielen Dank schon mal !&nbsp; &nbsp;Ich komme aber noch nicht ganz mit 😕

Wie müsste jetzt beispielsweise der Body als&nbsp;vnd.api+json aussehen um dem Produkt mit der ID:&nbsp;„b0876b4eab8c43819df58ac8eb73a7e2“ den SalesChannel mit der ID: „8892c9bed048425a890cf483986cad13“ zuzuweisen? Sobald es in Postman läuft komme ich klar, der Typ sollte ja „PATCH“ sein…&nbsp;

Auch wird mir nicht so ganz klar was die „visibilityID“ repräsentiert, gibt es da irgendwo was in der Dokumentation,&nbsp;wie das zusammen hängt, ich finde nichts?!

&nbsp;

---

<div class="post-metadata">

**Author:** ![B\_A](https://avatars.discourse-cdn.com/v4/letter/b/9fc348/32.png) [@B\_A](https://forum.shopware.com/u/B_A)\
**Post date:** [24. Februar 2020 um 15:32 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/4 "2020-02-24T15:32:33Z")

</div>

Hallo,

die visibilityID ist die Id für diesen Eintrag (z.B. Artikel A ist sichtbar in Shop A). Diese Id muss in der Regel immer mitgeliefert werden, ansonsten bekommt man beim **PATCH** eine Fehlermeldung zurück, dass versucht wird einen Eintrag zu erstellen, obwohl aktualisiert werden sollte (nicht immer der Fall). Ein vollständige Dokumentation findet man momentan nicht.  
Ich würde auch nicht die normalen Endpoints benutzen, sondern den **sync** -Endpoint, da dort direkt ein **upsert** (update/insert) gemacht werden kann. Mit diesem Endpoint können Einträge in einem Schritt hinzugefügt / aktualisiert werden (ist bei Variantenkombinationen sehr hilfreich und notwendig). Ich haben mal unten ein kleines Beispiel, wie es über den **sync** -Endpoint lösbar wäre. Am einfachsten schaut man aber selbst in der Browserkonsole nach, welche Sachen aufgerufen werden, wenn irgendwelche Operationen im Backend ausgeführt werden.

```
POST http://test.test/api/v1/_action/sync 

[
  {
    "action": "upsert",
    "entity": "product",
    "payload": [
      {
        "type": "product",
        "id": "b0876b4eab8c43819df58ac8eb73a7e2",
        "productNumber": "1234",
        "stock": 42,
        "name" : "test",
        "active": true,
        "visibilities": [
          {
            "id" : "3C69BDB4AB7F4090B048508DAB033D22",
            "productId": "b0876b4eab8c43819df58ac8eb73a7e2",
            "salesChannelId": "8892c9bed048425a890cf483986cad13",
            "visibility": 30
          }
        ]
      }
    ]
  }
]

```

Edit: „visibility“: 30 ist der numerische Wert von ProductVisibilityDefinition::VISIBILITY\_ALL

&nbsp;

Gruß, BA

---

<div class="post-metadata">

**Author:** ![balram](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@balram](https://forum.shopware.com/u/balram)\
**Post date:** [31. Juli 2020 um 07:51 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/5 "2020-07-31T07:51:23Z")

</div>

H‍i @B\_A‍, wo finde ich die ProductVisibilityDefinition? ich wäre nie darauf gekommen, dass die 30 sein muss.&nbsp;

Gruß Balram

---

<div class="post-metadata">

**Author:** ![Krispin](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/krispin/32/12849_2.png) [@Krispin](https://forum.shopware.com/u/Krispin)\
**Post date:** [31. Juli 2020 um 08:25 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/6 "2020-07-31T08:25:58Z")

</div>

Hi balram,

die findest du hier:&nbsp;[https://github.com/shopware/platform/blob/master/src/Core/Content/Product/Aggregate/ProductVisibility/ProductVisibilityDefinition.php](https://github.com/shopware/platform/blob/master/src/Core/Content/Product/Aggregate/ProductVisibility/ProductVisibilityDefinition.php)

In den meisten Fällen hilft es auch diese Dinge im Admin einmal nachzustellen und sich den Request-Payload anzuschauen.  
Edit: In der Doku werden die Werte auch aufgeführt:&nbsp;[https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/writing-entities#visibility-handling](https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/writing-entities#visibility-handling)

Gruß

Krispin

---

<div class="post-metadata">

**Author:** ![balram](https://avatars.discourse-cdn.com/v4/letter/b/278dde/32.png) [@balram](https://forum.shopware.com/u/balram)\
**Post date:** [31. Juli 2020 um 12:31 UTC](https://forum.shopware.com/t/api-setzen-des-verkaufskanals-sales-channels-fur-ein-produkt/64872/7 "2020-07-31T12:31:43Z")

</div>

Danke dir Krispin 🙂
