Api nutzung für produkte?

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

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

1 „Gefällt mir“

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)‘
}
]
}

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.

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

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();

Gibt’s denn einen Steuersatz mit der ID?

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?