API-Referenz Datenfeeds
Datenfeeds ermöglichen es, Produktdaten aus einem WEBSALE Shop für externe Systeme wie Suchmaschinen, Suchdienstleister etc. bereitzustellen. Der Endpunkt datafeeds/ ermöglicht es Ihnen, Ihre Datenfeeds zu verwalten. Mit dieser Schnittstelle können Sie bereits erstellte Feeds aktualisieren und löschen oder neue Datenfeeds erstellen.
Inhaltsverzeichnis
1. Unterstützte Methoden
Angabe aller unterstützten Methoden.
Befehl/Info | Endpunkte | GET | POST | PUT | DELETE |
|---|---|---|---|---|---|
Datenfeeds | datafeeds/ | ||||
Datenfeed-Vorlagen | datafeeds/templates | ||||
Generierung | datafeeds/build |
2. Datenfelder eines Datenfeeds
Name | Typ | Verwendung |
|---|---|---|
active | Boolean | Gibt an, ob der Datenfeed für den Export aktiviert ist |
createdAt | String | Zeitpunkt, zu dem der Datenfeed angelegt wurde (ISO 8601-Format, UTC). |
exportPlanOptions.exportAfterImport | Boolean | Gibt an, ob der Datenfeed nach einem Importvorgang automatisch exportiert wird. |
exportPlanOptions.exportPlan | Array | Liste Stunden, zu denen ein Export geplant ist. |
exportStatus | String | Status des letzten Exports: |
externalOutputTarget.host | String | Hostname oder IP-Adresse des externen Zielsystems |
externalOutputTarget.password | String | Passwort für Zugriff auf das Zielsystem |
externalOutputTarget.port | Integer | Portnummer des externen Zielsystems (z. B. 21 für FTP) |
externalOutputTarget.remotePath | String | Zielverzeichnis auf dem externen Server |
externalOutputTarget.type | String | Typ des Zielsystems (z. B. „ftp“, „sftp“, „none“) |
externalOutputTarget.user | String | Benutzername für das Zielsystem. |
fileName | String | Name der Datei, die beim Export erzeugt wird. |
id | Integer | Eindeutige ID des Datenfeeds. |
lastExportFinished | String | Zeitpunkt des Abschlusses des letzten erfolgreichen Exports (ISO 8601-Format, UTC). |
lastExportStarted | String | Zeitpunkt des Starts des letzten Exports (ISO 8601-Format, UTC). |
name | String | Name des Datenfeeds. |
options.exportCharset | String | Zeichensatz für die exportierte Datei (z. B. „utf-8“) |
options.webhookTrigger | String | Webhook, der nach Export ausgelöst wird (optional) |
options.zipType | String | Kompressionstyp für Exportdatei ( |
saveTarget | String | Speicherziel des Exports: |
subshopIds | Array | Liste der Subshops, für die der Datenfeed aktiv ist. |
targetDirectory | String | Zielverzeichnis, in dem die exportierte Datei gespeichert wird (überschreibt ggf. das Standardziel der Vorlage). |
templateId | Integer | ID der Vorlage, auf der der Datenfeed basiert. |
updatedAt | String | Zeitpunkt der letzten Aktualisierung des Datenfeeds (ISO 8601-Format, UTC). |
Beispiel:
{
"active": true,
"createdAt": "2025-03-24 16:34:58",
"exportPlanOptions": {
"exportAfterImport": true,
"exportPlan": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23
]
},
"exportStatus": "finished",
"externalOutputTarget": {
"host": "",
"password": "",
"port": 21,
"remotePath": "",
"type": "none",
"user": ""
},
"fileName": "test",
"id": 226,
"lastExportFinished": "2025-04-09 11:31:51",
"lastExportStarted": "2025-04-09 11:31:46",
"name": "test",
"options": {
"exportCharset": "utf-8",
"webhookTrigger": "",
"zipType": "zip"
},
"saveTarget": "contentData",
"subshopIds": [
"deutsch"
],
"targetDirectory": "/test",
"templateId": 226,
"updatedAt": "2025-03-25 11:21:56"
}
2.2 Datenfeed-Vorlagen
Name | Typ | Verwendung |
|---|---|---|
id | Integer | Eindeutige ID der Datenfeed-Vorlage |
name | String | Name der Datenfeed-Vorlage |
content | String | Der Inhalt der Vorlage. Hier darf die Template-Sprache verwendet werden. |
createdAt | String | Zeitpunkt der Erstellung |
updatedAt | String | Zeitpunkt der letzten Aktualisierung |
Beispiel:
{
"content": "<products>\n{{ \n var $product = true;\n while($product);\n $product = $wsProducts.loadNext() }}<product>\n <id>{{= $product.id }}</id>\n <name>{{= $product.name }}</name>\n <url>{{= $wsViews.url('Product', {productId: $product.id}, 'absolute') }}</url>\n </product>{{ /while }}\n</products>",
"createdAt": "2025-04-30 14:28:58",
"id": 4,
"name": "productsAsXML",
"updatedAt": "2025-04-30 14:41:14"
}
3. Methoden für Datenfeeds
In diesem Abschnitt werden alle Endpunkte zur Verwaltung von Datenfeeds im Shopsystem beschrieben. Über die Schnittstelle können Datenfeeds erstellt, abgerufen, aktualisiert, gelöscht und geplant exportiert werden.
3.1 GET datafeeds
Diese Methode liefert eine paginierte Liste aller im System vorhandenen Datenfeeds.
Standardmäßig werden 100 Einträge pro Anfrage zurückgegeben.
Über den optionalen Parameter size kann die Anzahl der zurückgelieferten Datensätze angepasst werden – bis zu einem maximalen Wert von 300. Der size-Wert darf beliebig zwischen 1 und 300 gewählt werden.
Die Ergebnisliste kann über definierte Filter- und Sortierparameter gezielt eingeschränkt und geordnet werden.
Für den Zugriff ist eine Leseberechtigung für Datenfeeds erforderlich.
Beispiel:
http://www.<ihr-shop>.de/admin/api/v1/datafeedsAntwort:
{
"endReached": true,
"items": [
{
"active": true,
"createdAt": "2025-02-17 10:30:40",
...
},
...
],
"nextPageToken": "MA",
"totalCount": 1
}Filterfelder:
id, active, name, fileName, templateId, subshopIds, targetDirectory, exportStatus, lastExportStarted, lastExportFinished, createdAt, updatedAt
Sortierfelder:
id, active, name, fileName, templateId, subshopIds, exportStatus, lastExportStarted, lastExportFinished, createdAt, updatedAt
Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Datenfeeds. |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "invalidCharacters" |
|
400 Bad Request | "unknownDataField" | Ein Filter- oder Sortierfeld ist ungültig. |
400 Bad Request | "unknownOperation" | Ein Filtertyp ist ungültig. |
400 Bad Request | "syntaxError" |
|
3.2 GET datafeeds/{id}
Diese Methode ruft die vollständigen Details eines einzelnen Datenfeeds anhand seiner eindeutigen ID ab.
Der Endpunkt liefert alle konfigurierten Eigenschaften des Datenfeeds, einschließlich Name, Exportoptionen, Verzeichnisangaben und Statusinformationen. Der Zugriff erfordert die entsprechende Leseberechtigung für Datenfeeds.
Beispiel:
http://www.<ihr-shop>.de/admin/api/v1/datafeeds/2Antwort:
{
"active": true,
"createdAt": "2025-02-17 10:30:40",
"exportPlanOptions": {
"exportAfterImport": false,
"exportPlan": []
},
"exportStatus": "idle",
"externalOutputTarget": {
"host": "",
"password": "",
"port": 21,
"remotePath": "",
"type": "none",
"user": ""
},
"fileName": "foo",
"id": 1,
"lastExportFinished": "0000-00-00 00:00:00",
"lastExportStarted": "0000-00-00 00:00:00",
"name": "myDataFeed",
"options": {
"exportCharset": "utf-8",
"webhookTrigger": "",
"zipType": "zip"
},
"saveTarget": "system",
"subshopIds": [
"deutsch",
"english"
],
"targetDirectory": "/bar",
"templateId": 1,
"updatedAt": "2025-02-17 10:30:40"
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Datenfeeds. |
400 Bad Request | "invalidValue" |
|
404 Not Found |
| Datenfeed mit |
3.3 PUT datafeeds/{id}
Diese Methode aktualisiert einen bestehenden Datenfeed anhand seiner eindeutigen ID. Daten bleiben bis zur Generierung unverändert.
Im Request-Body können verschiedene Eigenschaften des Datenfeeds geändert werden, darunter Name, Status, Dateiname, Exportoptionen und Zielverzeichnisse. Die FeldercreatedAt und updatedAt können übergeben werden, werden jedoch vom System ignoriert und nicht überschrieben.
Der aktualisierte Datenfeed wird als JSON-Objekt im Response zurückgegeben.
Für die Ausführung sind Schreibberechtigungen erforderlich.
Beispiel:
http://www.<ihr-shop>.de/admin/api/v1/datafeeds/1Request Body:
{
"name": "newName",
"active": true,
"templateId": 1,
"saveTarget": "system",
"fileName": "foo",
"targetDirectory": "/bar",
"subshopIds": [
"deutsch",
"english"
],
"options": {
"zipType": "zip"
},
"exportPlanOptions": {
"exportAfterImport": false,
"exportPlan": []
},
"externalOutputTarget": {
"type": "none",
"host": "",
"port": 21,
"user": "",
"password": "",
"remotePath": ""
}
}Antwort:
{
"active": true,
"createdAt": "2025-02-17 10:30:40",
"exportPlanOptions": {
"exportAfterImport": false,
"exportPlan": []
},
"exportStatus": "finished",
"externalOutputTarget": {
"host": "",
"password": "",
"port": 21,
"remotePath": "",
"type": "none",
"user": ""
},
"fileName": "foo",
"id": 1,
"lastExportFinished": "2025-02-17 14:31:57",
"lastExportStarted": "2025-02-17 14:31:52",
"name": "newName",
"options": {
"exportCharset": "utf-8",
"webhookTrigger": "",
"zipType": "zip"
},
"saveTarget": "system",
"subshopIds": [
"deutsch",
"english"
],
"targetDirectory": "/bar",
"templateId": 1,
"updatedAt": "2025-05-02 09:54:52"
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Datenfeeds. |
400 Bad Request | "invalidCombination" | Wenn |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "InvalidCharacter" |
|
400 Bad Request | "invalidFormat" |
|
400 Bad Request | "unknownDataField" |
|
404 Not Found |
| Datenfeed mit |
409 Conflict |
| Das Aktualisieren ist fehlgeschlagen. |
3.4 POST datafeeds
Diese Methode erstellt einen neuen Datenfeed.
Die Eigenschaften des Datenfeeds, wie Name, Status, Dateiname, Exportoptionen und Zielverzeichnisse, werden über den Request-Body definiert. Die Felder createdAt und updatedAt können zwar übergeben werden, werden jedoch vom System ignoriert und automatisch gesetzt.
Nach erfolgreicher Erstellung wird der vollständige Datenfeed als JSON-Objekt zurückgegeben.
Die Ausführung setzt Erstellberechtigungen voraus.
Beispiel:
http://www.<ihr-shop>.de/admin/api/v1/datafeedsRequest Body:
{
"name": "myFeed",
"active": true,
"templateId": 4,
"saveTarget": "system",
"fileName": "myFeed.csv",
"targetDirectory": "/abc",
"subshopIds": [
"deutsch",
"english"
],
"options": {
"zipType": "zip"
},
"exportPlanOptions": {
"exportAfterImport": false,
"exportPlan": []
},
"externalOutputTarget": {
"type": "none",
"host": "",
"port": 21,
"user": "",
"password": "",
"remotePath": ""
}
}Antwort:
{
"active": true,
"createdAt": "2025-04-30 14:28:59",
"exportPlanOptions": {
"exportAfterImport": false,
"exportPlan": []
},
"exportStatus": "idle",
"externalOutputTarget": {
"host": "",
"password": "",
"port": 21,
"remotePath": "",
"type": "none",
"user": ""
},
"fileName": "myFeed.csv",
"id": 5,
"lastExportFinished": "0000-00-00 00:00:00",
"lastExportStarted": "0000-00-00 00:00:00",
"name": "myFeed",
"options": {
"exportCharset": "utf-8",
"webhookTrigger": "",
"zipType": "zip"
},
"saveTarget": "system",
"subshopIds": [
"deutsch",
"english"
],
"targetDirectory": "/abc",
"templateId": 4,
"updatedAt": "2025-04-30 14:28:59"
}Fehlercodes:
Fehler | Typ | Grund |
|---|---|---|
401 Unauthorized |
| Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Datenfeeds. |
400 Bad Request |
| Request body konnte nicht geladen werden. |
400 Bad Request | "invalidValue" |
|
400 Bad Request | "InvalidCharacter" |
|
400 Bad Request | "invalidFormat" |
|
© 2025 WEBSALE AG | Impressum | Datenschutz