# Api nutzung für produkte?

**URL:** https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618
**Category:** Shopware 6 (German)
**Tags:** programming
**Created:** [22. Januar 2024 um 14:55 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618 "2024-01-22T14:55:48Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![davko](https://avatars.discourse-cdn.com/v4/letter/d/e9bcb4/32.png) [@davko](https://forum.shopware.com/u/davko)
#### Post date: [22. Januar 2024 um 14:55 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/1 "2024-01-22T14:55:48Z")

</div>

kurz und knapp wie nutze ich die API um Produkte hinzuzufügen oder preise bzw Lagerbestand zu aktualisieren?

Welche Sprache am besten fürs Skript? JS oder Shell oder vielleicht sogar eine einfache .bat?

bitte kein _developer docs_ link habe da jetzt 2 tage rumprobiert und es wird trotzdem nichts

---

<div class="post-metadata">

### Author: ![gaxweb](https://avatars.discourse-cdn.com/v4/letter/g/ea5d25/32.png) [@gaxweb](https://forum.shopware.com/u/gaxweb)
#### Post date: [22. Januar 2024 um 15:15 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/2 "2024-01-22T15:15:14Z")

</div>

Also wenn dir die Doku so _gar_ nichts sagt, dann solltest du vielleicht jemanden damit beauftragen.

Du authentifizierst dich und schickst dann HTTP Anfragen an bestimmte URLs mit gewissem Inhalt im Body. Wie so ziemlich jede andere Web-API auch.

Für PHP gibt’s ein SDK: [GitHub - vienthuong/shopware-php-sdk: A PHP SDK for Shopware 6 Admin API](https://github.com/vienthuong/shopware-php-sdk)

---

<div class="post-metadata">

### Author: ![davko](https://avatars.discourse-cdn.com/v4/letter/d/e9bcb4/32.png) [@davko](https://forum.shopware.com/u/davko)
#### Post date: [22. Januar 2024 um 15:23 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/3 "2024-01-22T15:23:37Z")

</div>

Ich habe schon das ein oder andere Script geschrieben und auch alles beachtet aber dann kommt zb sowas

> Fehler beim Hinzufügen des Produkts: {  
> errors: [  
> {  
> code: ‚1452‘,  
> status: ‚500‘,  
> title: ‚Internal Server Error‘,  
> detail: ‚An exception occurred while executing a query: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`db_XXXXXXX`.`product`, CONSTRAINT `fk.product.tax_id` FOREIGN KEY (`tax_id`) REFERENCES `tax` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE)‘  
> }  
> ]  
> }

---

<div class="post-metadata">

### Author: ![gaxweb](https://avatars.discourse-cdn.com/v4/letter/g/ea5d25/32.png) [@gaxweb](https://forum.shopware.com/u/gaxweb)
#### Post date: [22. Januar 2024 um 15:26 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/4 "2024-01-22T15:26:49Z")

</div>

Das bedeutet, dass die Anfrage an die DB eine Fremdschlüssel-Bedingung verletzen würde und daher abgelehnt wurde.

Die HTTP-Anfrage war also prinzipiell korrekt, aber die Daten, die enthalten waren, können so nicht verarbeitet werden.

Jetzt gilt es herauszufinden was SW da nicht gefällt. Ist immer ein Gefummel, wenn das passiert. In dem Fall hat’s wohl irgendwas mit der ID der Steuer zu tun.

---

<div class="post-metadata">

### Author: ![davko](https://avatars.discourse-cdn.com/v4/letter/d/e9bcb4/32.png) [@davko](https://forum.shopware.com/u/davko)
#### Post date: [22. Januar 2024 um 15:47 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/5 "2024-01-22T15:47:23Z")

</div>

das produkt was er einfügen soll ist ein beispiel aus dem admin api doc

```auto
const axios = require('axios');

const apiUrl = 'https://BEISPIEL.de';
const clientId = 'administration';
const clientSecret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const username = 'XXXXXXXXXXXXX';
const password = 'XXXXXXXXXXXXX';

// Funktion, um Access Token zu erhalten
async function getAccessToken() {
  try {
    const response = await axios.post(`${apiUrl}/api/oauth/token`, {
      grant_type: 'password',
      client_id: clientId,
      client_secret: clientSecret,
      username: username,
      password: password,
    });

    return response.data.access_token;
  } catch (error) {
    console.error('Fehler beim Erhalten des Access Tokens:', error.response ? error.response.data : error.message);
    throw error;
  }
}

async function addProduct(accessToken) {
  const productData = {
    name: 'Testprodukt',
    productNumber: 'random',
    stock: 10,
    taxId: 'a5da76b447db4d0aba62e6512dadf45b',
    price: [
      {
        currencyId: 'b7d2554b0ce847cd82f3ac9bd1c0dfca',
        gross: 15,
        net: 10,
        linked: false,
      },
    ],
  };

  try {
    const response = await axios.post(`${apiUrl}/api/product`, productData, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${accessToken}`,
      },
    });

    console.log('Produkt erfolgreich hinzugefügt:', response.data.data);
  } catch (error) {
    console.error('Fehler beim Hinzufügen des Produkts:', error.response ? error.response.data : error.message);
  }
}

async function main() {
  try {
    const accessToken = await getAccessToken();
    await addProduct(accessToken);
  } catch (error) {
    console.error('Allgemeiner Fehler:', error);
  }
}

main();

```

---

<div class="post-metadata">

### Author: ![gaxweb](https://avatars.discourse-cdn.com/v4/letter/g/ea5d25/32.png) [@gaxweb](https://forum.shopware.com/u/gaxweb)
#### Post date: [23. Januar 2024 um 08:18 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/6 "2024-01-23T08:18:08Z")

</div>

> [@davko](#):
>
> `a5da76b447db4d0aba62e6512dadf45b`

Gibt’s denn einen Steuersatz mit der ID?

---

<div class="post-metadata">

### Author: ![davko](https://avatars.discourse-cdn.com/v4/letter/d/e9bcb4/32.png) [@davko](https://forum.shopware.com/u/davko)
#### Post date: [23. Januar 2024 um 12:52 UTC](https://forum.shopware.com/t/api-nutzung-fuer-produkte/102618/7 "2024-01-23T12:52:05Z")

</div>

hallo ja die gibt es habe auch produkt export gemacht und andere ausprobiert trotzdem keine chance, hast du vielleicht einen code snippet egal in welcher sprache wo man drauf aufbauen könnte?
