API-Referenz Datenfeeds

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

Befehl/Info

Endpunkte

GET

POST

PUT

DELETE

Datenfeeds

datafeeds/

Datenfeed-Vorlagen

datafeeds/templates

Generierung

datafeeds/build

2. Datenfelder eines Datenfeeds

Name

Typ

Verwendung

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:
0 = Idle
1 = Finished
2 = Error
3 = Starting
4 = Running

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 ("zip", "gzip")

saveTarget

String

Speicherziel des Exports:
“contentData” – öffentlich abrufbar
“system” – nicht öffentlich abrufbar

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

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/datafeeds

Antwort:

{ "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

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"

size ∉ [1;300]
sort ∉ {"asc", "desc"}
pageToken ist keine Zahl oder kleiner als 0.

400 Bad Request

"invalidCharacters"

size ist keine Ganzzahl.
Ein Filterwert ist ungültig.

400 Bad Request

"unknownDataField"

Ein Filter- oder Sortierfeld ist ungültig.

400 Bad Request

"unknownOperation"

Ein Filtertyp ist ungültig.

400 Bad Request

"syntaxError"

sort enthält mehr als einen oder keinen ":".

 

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/2

Antwort:

{ "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

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"

id ist ungültig.

404 Not Found

 

Datenfeed mit id={id} wurde nicht gefunden.

 

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/1

Request 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

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 active=true gilt, kann templateId nicht 0 sein (Standard-Wert).

400 Bad Request

"invalidValue"

id ist ungültig.
templateId ist ungültig.
Eine Subshop-Id ist ungültig.
saveTarget ∉ {"system", "contentData"}
options.zipType ∉ {"none", "gzip", "zip"}
exportPlanOptions.exportPlan enthält ungültige Stunden.

400 Bad Request

"InvalidCharacter"

fileName enthält /, \ oder :.

400 Bad Request

"invalidFormat"

name, fileName, targetDirectory oder saveTarget sind keine Strings | active ist kein Boolean | templateId ist keine Ganzzahl subshopIds ist kein Array von Strings | options ist kein Objekt | options.zipType, options.exportCharset oder options.webhookTrigger sind keine Strings | externalOutputTarget ist kein Objekt | externalOutputTarget.type, externalOutputTarget.host, externalOutputTarget.user, externalOutputTarget.password oder externalOutputTarget.remotePath sind keine Strings | externalOutputTarget.port ist keine Zahl | exportPlanOptions ist kein Objekt | exportPlanOptions.exportAfterImport ist kein Boolean | exportPlanOptions.exportPlan ist kein Array.

400 Bad Request

"unknownDataField"

options enthält etwas außer zipType, exportCharset oder webhookTrigger. | externalOutputTarget enthält etwas außer type, host, port, user, password oder remotePath. | exportPlanOptions enthält etwas außer exportAfterImport oder exportPlan. | Request Body enthält ein unbekanntes Feld.

404 Not Found

 

Datenfeed mit id={id} wurde nicht gefunden.

409 Conflict

 

Das Aktualisieren ist fehlgeschlagen.
Der Dateipfad wird bereits verwendet.

 

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/datafeeds

Request 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

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"

templateId ist ungültig.
Eine Subshop-Id ist ungültig.
saveTarget ∉ {"system", "contentData"}
options.zipType ∉ {"none", "gzip", "zip"}
exportPlanOptions.exportPlan enthält ungültige Stunden.

400 Bad Request

"InvalidCharacter"

fileName enthält /, \ oder :.

400 Bad Request

"invalidFormat"

name, fileName, targetDirectory oder saveTarget sind keine Stringsactive ist kein BooleantemplateId ist keine Ganzzahl subshopIds ist kein Array von Stringsoptions ist kein Objektoptions.zipType, options.exportCharset oder options.webhookTrigger sind keine StringsexternalOutputTarget ist kein ObjektexternalOutputTarget.type, externalOutputTarget.host, externalOutputTarget.user, externalOutputTarget.password oder externalOutputTarget.remotePath sind keine StringsexternalOutputTarget.port ist keine ZahlexportPlanOptions ist kein ObjektexportPlanOptions.exportAfterImport ist kein BooleanexportPlanOptions.exportPlan ist kein Array.

© 2025 WEBSALE AG | Impressum | Datenschutz