Synchronisierung per CSV: vollständige Spezifikation
Spezifikation der Artikel-CSV: Felder, Grenzen, Auto- und Motorradattribute sowie Übermittlung per SFTP oder URL.
Für die Synchronisierung zwischen den Kunden und Portal Hero verwenden wir ein System von CSV-Dateien. Die wichtigste CSV-Datei ist die der Artikel (oder Artikel-Feed), in der alle Artikel aufgelistet sind, die in den verschiedenen Portalen veröffentlicht werden. In dieser Datei befinden sich die Artikel mit ihren Merkmalen.
Funktionsweise der Synchronisierung
Die Art, jeden Artikel zu identifizieren, erfolgt über das Feld id, auf das wir uns als eindeutige Kennung stützen, um zu entscheiden, ob ein Artikel aktualisiert wird oder nicht mehr existiert. Wenn ein Artikel zum ersten Mal im Artikel-Feed erscheint, wird er in alle vom Kunden ausgewählten Portale hochgeladen. Wenn ein Artikel nicht mehr im Feed vorhanden ist, wird er als verkauft markiert, und wenn sich ein beliebiges Datum des Artikels ändert, wird er ebenfalls in den Portalen aktualisiert. Weitere Details zur Synchronisierung selbst finden Sie hier.
Das allgemeine Format dieser CSV-Dateien ist folgendes:
- Durch Kommas getrennte Felder
- Die Kopfzeile muss vorhanden sein, um die Felder identifizieren zu können
- Durch doppelte Anführungszeichen begrenzte Felder (bei Bedarf oder immer)
- Dateikodierung UTF-8
Dateiaustausch
Wir haben zwei Möglichkeiten, uns die Datei zu übermitteln:
- SFTP
Wir verfügen über einen SFTP, um die Dateien auszutauschen und den sicheren Informationsaustausch zu erleichtern. Die Zugangsdaten zum SFTP (Benutzer und Passwort) werden während des Onboarding-Prozesses bereitgestellt.
Die übrigen gemeinsamen Verbindungsdaten sind folgende:- Host:
sftp.portalhero.pro - Port:
2222
Zudem ist der SFTP abgesichert und auf Netzwerkebene beschränkt, und wir benötigen eine oder mehrere IPs, um sie zu unserer Liste der zugelassenen Zugriffs-IPs hinzuzufügen.
Innerhalb des SFTP gibt es einen erstellten Ordner namens upload, in den die Dateien geschrieben werden: Für die Artikeldatei lautet der Dateiname: item_feed.csv - Host:
- url
Der Artikel-Feed kann auch über eine öffentliche URL gesendet werden, von der der Portal-Hero-Prozess ihn bei jeder täglichen Ausführung herunterlädt.
Die URL muss vom Kunden während des Onboarding-Prozesses angegeben werden. Falls weitere Sicherheitsmaßnahmen erforderlich sind, können Sie uns beliebige Header übermitteln, die wir der Anfrage hinzufügen.
Format der CSV-Dateien
Auflistung der Felder, Detailtypen und Beispiele der Artikel-CSV-Datei:
| Name | Typ | Erforderlich | Beschreibung | Beispiel |
|---|---|---|---|---|
| id | string | Ja | Eindeutige Kennung des Artikels. Sie muss für alle Artikel eindeutig sein und ist die, die wir verwenden, um in unserer Kommunikation auf die Artikel zu verweisen. (Maximale Länge: 150 Zeichen) | wer432r |
| price | double | Ja | Preis in € mit einer Genauigkeit von 2 Dezimalstellen (nicht obligatorisch) des Artikels. | 344.95 |
| external_category | string | Ja | Kennung der Kategorie, in die der Artikel hochgeladen wird. Muss ein Text mit der Kategorie sein, keine numerische Kennung. Kann direkt die Kategorie sein, die in Ihrem System existiert. | Camisetas manga corta |
| status | string | Ja | Zustand des Artikels. Die Werte sind auf eine Aufzählung beschränkt, die ebenfalls weiter unten angegeben wird. | good |
| title | string | Ja | Titel des Artikels. Maximal 60 Zeichen. | Camiseta verde |
| description | string | Ja | Beschreibung des Artikels. Maximal 600 Zeichen. | Camiseta verde talla M… |
| images | list string | Ja | Zusammengesetztes Feld, erstellt durch die Verkettung der verschiedenen URLs der Artikelbilder mittels "|" (pipe). Diese müssen öffentlich zugänglich und im Format jpg sein. Maximal 10 Bilder. | https://image-cdn.com/image1.jpg|https://image-cdn.com/image2.jpg|https://image-cdn.com/image3.jpg |
| store | list string | Nein | Kennung des Kontos im Portal, in dem dieser Artikel veröffentlicht werden soll. Nur erforderlich, wenn mehr als ein Konto zur Veröffentlichung von Artikeln vorhanden ist. Bei mehr als einem Konto oder mehr als einem dem Produkt zugeordneten Portal muss es eine Liste von Ganzzahlen sein, getrennt durch "|" (pipe). | 2|F5 |
| portal_status | string | Nein | Veröffentlichungsstatus des Artikels. Mögliche Status: “active”, “reserved” | active |
| shipping | bool | Nein | Boolescher Wert, um anzugeben, ob für den Artikel Versand innerhalb des Portals akzeptiert wird. | true |
| shipping_weight_kg | int | Nein | Mit dem Feld "shipping" verbundenes Feld, erforderlich, wenn das Feld shipping true ist. Gibt das Gewicht in kg (aufgerundet ohne Dezimalstellen) des Artikels an. | 3 |
| free_shipping | bool | Nein | Boolescher Wert, um anzugeben, ob der Verkäufer die Versandkosten übernimmt und diese somit für den Käufer kostenlos sind. | true |
| hashtags | string | Nein | Zusammengesetztes Feld, erstellt durch die Verkettung der verschiedenen Hashtags mittels "|" (pipe). Jeder davon ist ein einzelnes Wort ohne Leerzeichen und ohne vorangestelltes Rautezeichen (#). | bluetooth|bajoconsumo|geek |
| brand | String | Nein | Marke des Artikels | Apple |
| model | String | Nein | Modell des Artikels | iPhone 15 pro |
| stock | int | Nein | Anzahl der Artikel | 3 |
| attributes | str | Nein | Feld für zusätzliche Attribute des Artikels. Je nach Kategorie können einige dieser Attribute obligatorisch sein. * | additional attributes |
* Für Auto-Artikel müssen die folgenden Attribute im Feld 'attributes' als serialisierte JSON-Zeichenkette bereitgestellt werden:
Bezüglich des Feldes status, das sich auf den Zustand der Artikel bezieht, sind die Optionen folgende:
["new", "as_good_as_new", "good", "fair", "has_given_it_all"]
Attribute des Autos
Die Attribute des Autos sind eine Reihe von Merkmalen, die ein Auto beschreiben. Sie werden im Feed und zur Veröffentlichung in den Marktplätzen verwendet.
| Name | Typ | Erforderlich | Beschreibung | Beispiel |
|---|---|---|---|---|
| version | String | Ja | Motorversion oder Ausstattungsniveau des Autos. | 1.6 TDI |
| year | Int | Ja | Baujahr. | 2018 |
| km | Int | Ja | Kilometerstand in Kilometern. | 60000 |
| horse_power | Int | Ja | Motorleistung in PS (DIN). | 105 |
| doors | Int | Nein | Anzahl der Türen. | 5 |
| body_type | String | Nein | Karosserietyp oder -stil. Mögliche Werte:'small_car', 'coupe_cabrio', 'sedan', 'family_car', 'mini_van', 'four_x_four', 'van', 'others' | sedan |
| engine | String | Ja | Kraftstofftyp. Mögliche Werte:'gasoil', 'gasolina', 'electric_hybrid', 'others' | gasoil |
| gear_box | String | Ja | Getriebetyp. Mögliche Werte sind:'manual', 'automatic' | manual |
Beispiel (python):
car_attrs = {
"version": "1.6 TDI Toyota",
"year": "2018",
"horse_power": 100,
"mileage": 12000,
"engine": "gasoil",
"gearbox": "manual"
}
attributes = json.dumps(car_attrs)
Attribute des Motorrads
Um Motorräder zu integrieren, muss der Artikel die spezifischen Fahrzeuginformationen enthalten. Die technischen Daten werden als JSON serialisiert im Feld 'attributes' gesendet, während Marke und Modell in den Feldern 'brand' und 'model' der CSV übermittelt werden.
Das Feld 'external_category' muss einen der Werte '2', 'Motos', 'Motorbikes' annehmen, damit der Artikel als Motorrad verarbeitet wird. Diese Integration erfordert, dass der Motorrad-ERP-Service in Ihrem Konto aktiv ist.
Die Werte von 'brand' und 'model' müssen exakt mit denen unserer Motorrad-Taxonomie übereinstimmen. Um die gültigen Werte abzufragen, verfügen wir über zwei öffentliche Endpunkte (erfordern Authentifizierung und den aktiven Motorrad-ERP-Service):
GET /motorbike_brands— gibt die vollständige Liste der verfügbaren Marken mit ihrer 'uid' und 'value' zurück.GET /motorbike_models?brand_id={uid}— gibt die der über 'brand_id' angegebenen Marke zugeordneten Modelle zurück.
Beachten Sie, dass der Titel des Artikels automatisch aus Marke, Modell, Version (falls angegeben) und Baujahr generiert wird, sodass der Wert des Feldes 'title' bei Motorrädern überschrieben wird.
| Name | Typ | Erforderlich | Beschreibung | Beispiel |
|---|---|---|---|---|
| year | Int | Ja | Erstzulassungsjahr. Wert zwischen 1950 und dem auf das aktuelle folgende Jahr. | 2020 |
| version | String | Nein | Handelsname oder Version des Modells. Wird dem automatisch generierten Titel hinzugefügt. | modelo actual |
| km | Int | Ja | Kilometerstand in Kilometern. Darf nicht negativ sein. | 5420 |
| horse_power | Int | Nein | Motorleistung in PS. Muss ein positiver Wert sein. | 47 |
| engine_capacity_cc | Int | Nein | Hubraum des Motors in Kubikzentimetern. Muss ein positiver Wert sein. | 400 |
| fuel_type | String | Nein | Kraftstofftyp. Mögliche Werte: 'gasoline', 'electric'. Wenn nicht angegeben, ist der Standardwert 'gasoline'. | gasoline |
| license_plate | String | Nein | Kennzeichen des Fahrzeugs. | 1234 ABC |
Beispiel (python):
motorbike_attrs = {
"year": 2020,
"version": "modelo actual",
"km": 5420,
"horse_power": 47,
"engine_capacity_cc": 400,
"fuel_type": "gasoline",
"license_plate": "1234 ABC"
}
attributes = json.dumps(motorbike_attrs)