Skip to main content
Skip table of contents

Integration mit Danfoss (Produktdaten Semikron)

Danfoss liefert Produktstammdaten seiner Konzernmitglieder als Download, aber auch per REST API (Product Data API) aus.

Open API Definition des APIs

Vorbereitungen

Zur Nutzung des APIs muss ein Developer-Account auf developer.danfoss.com erstellt und von Danfoss für das API freigegeben werden.

https://my.danfoss.com/

Benutzer:
guenter.rubik@centauri.at   

Kennwort:
(lt. Kennwortverwaltung)

Danach muss die geplante Applikation bei Danfoss registriert werden und bekommt dadurch einen ClientID und ein ClientSecret.

image-20260330-083217.png

Der SKATECH Marktplatz ist die App 710ff29e-6e3d-4255-adf6-502c1e400f7f

ClientID:
wSupaIW51fR64G44HOmTBiLAgzVrEcx8MSYAtX7JcvPyrSoZ

ClientSecret:
(lt. Kennwortverwaltung)

Für die Nutzung des APIs im Betrieb ist ein OAuth2 Bearer Token notwendig, das vor den Aufrufen abgeholt werden muss.

Um dieses Token in einem Workflow abzuholen, gibt es die Aktion Centauri.Shop.Workflows.HTTP.OAuth, in dem die ClientID/ClientSecret und ein Nutzungs-Scope definiert werden muss. Für das Produkt-API benötigen wir

app.products.read -

app.categories.read -

Danach kann mit https://api.danfoss.com/product-data/products eine Liste von Produkten für eine bestimmte Kategorie bzw. ab einem Änderungsdatum abgefragt werden.

CODE
https://api.danfoss.com/product-data/products?modified_after=2026-03-30T12%3A00%3A00Z

Holt alles ab dem 30.03.2026 ab.

CODE
https://api.danfoss.com/product-data/products?categories=CFHSemikronDanfoss

Holt alles für die Kategorie CFHSemikronDanfoss ab.

Das Ergebnis ist ein JSON, das die Produkt Id, Name, Beschreibungstext und Kategoriezugehörigkeit enthält.

Das JSON wird in Teilen geliefert. Wenn ein weiterer Teil verfügbar ist, wird mit den Daten im JSON ein continuation_token geliefert, der beim nächsten Aufruf als Url-Parameter ergänzt werden muss.

Die Kategorien werden als Code geliefert. Soll der tatsächliche Name abgefragt werden, muss mit dem Aufruf https://api.danfoss.com/product-data/categories/der Name abgefragt werden. Dabei wird der Code einfach an den Url angehängt.

Zur Nutzung dieses APIs wurde für Workflows die Aktion Centauri.Shop.Workflows.Supplier.CreateAPI implementiert, die die wiederholten Aufrufe des APIs mittels continuation_tokendurchführt und Kategorie-Codes mittels API in einen Kategorie-Namen übersetzen kann.

Das Ergebnis des Abrufs wird in die Tabelle itemimport (Lieferantenkataloge) geschrieben. Alle so importierten Produkte haben einen per Parameter definierbaren Status. Als Default wird NEW verwendet.

Urls des APIs, die benutzten Felder und auch das Umwandeln der Kategorie Codes muss in den Parametern des Workflows implementiert werden. Es gibt keinen Default.

Da das Danfoss API einen OAuth2 Bearer Token voraussetzt, muss die Aktion Centauri.Shop.Workflows.HTTP.OAuth vorab im Workflow genutzt werden.

Gegenüber dem wiederholten Aufrufen von einfachen Centauri.Shop.Workflows.HTTP.Get Aktionen, werden die übertragenen JSON Daten von dieser Aktion nicht in den Context zum nachfolgenden Parsing mit Centauri.Shop.Workflows.Import.Json geschrieben werden.

Für jede Produkt Id kann mit dem Aufruf https://api.danfoss.com/product-data/products/ die Details des Produkts abgefragt werden. Der Produkt Id wird dabei ebenfalls an den Url angefügt. Zur Definition des Umfangs muss an den Aufruf ein Url Parameter select angefügt werden, der eine Auflistung von Bereichen enthält.

  • productdetails: Basic product information (name, description, dimensions...).

  • accessories: List of accessory IDs related to the product.

  • document: List of document assets (application guides, brochures...).

  • approval: List of regulatory documents (certificates, EU declarations...).

  • photo: List of assets related to the product.

  • drawing: List of drawings (CAD, dimensional...).

  • software: List of software/firmware files related to the product.

  • operationaldata: Information like plants, commodity codes, country of origin...

  • spareparts: List of spare parts IDs for the product.

  • packaging: Format and quantity of the product.

  • catalogstructure: Include category data of the product (parent_categories).

  • services : List of services IDs related to the product.

Merkmalsleisten werden als specification Knoten im JSON übertragen.

Bilder werden als Assets Knoten vom Typ PHOTOS im JSON übertragen.

Dokumente werden als Assets Knoten vom Typ DOCUMENTS im JSON übertragen.

Zur Nutzung dieses APIs wurde für Workflows die Aktion Centauri.Shop.Workflows.Supplier.UpdateAPI implementiert, die das JSON abruft und ein konfigurierbares Mapping auf die Felder des Lieferantenkatalogs durchführt.

Der REST API Aufruf wird automatisch mit für alle Produkte eines Katalogs eines definierten Lieferanten durchgeführt. Zusätzlich kann noch ein Status des Produkts als Filter verwendet werden.

Das Ergebnis des Abrufs wird wieder in die Tabelle itemimport (Lieferantenkataloge) geschrieben. Alle so aktualisierten Produkte haben einen per Parameter definierbaren neuen Status.

Urls des APIs und die benutzten Felder müssen in den Parametern des Workflows implementiert werden. Es gibt keinen Default.

Da das Danfoss API einen OAuth2 Bearer Token voraussetzt, muss die Aktion Centauri.Shop.Workflows.HTTP.OAuth vorab im Workflow genutzt werden.

Gegenüber dem wiederholten Aufrufen von einfachen Centauri.Shop.Workflows.HTTP.Get Aktionen, werden die übertragenen JSON Daten von dieser Aktion nicht in den Context zum nachfolgenden Parsing mit Centauri.Shop.Workflows.Import.Json geschrieben werden.

Damit sind die Produkte im Lieferantenkatalog.

Um daraus Verkaufsprodukte zu machen, gibt es eine Workflow Aktion Centauri.Shop.Workflows.Import.CreateProductsFromCatalog

Die Aktion hat die gleichen Parameter wie Produkte generieren im Lieferantenkatalog.

Sollen Produkte in Kategorien des Marktplatzes gemapped werden, muss das Mapping auf dem parametrisierten Lieferanten im Admin Backend durchgeführt werden.

Zusätzlich muss als Vorarbeit ein Lieferant angelegt werden (Danfoss/Semikron) und der Name bzw. die Id dieses Lieferanten in den untenstehenden Workflow eingetragen werden.

image-20260330-105937.png

Schritt ID 104 dient nur zur Authorisierung der nachfolgenden APIs und wurde bereits oben erklärt.

Schritt ID 105 holt die Liste der Produkte aus der Kategorie Semikron

image-20260330-110150.png

Wichtig ist dabei der Bereich Mapping, der die Antwort als JSON in die Lieferantenkatalog Tabelle übernimmt.

Die beiden letzten Parameter dienen zur Umwandlung von Kategoriecodes in lesbare Kategorienamen.

Die Angaben von Feldern im JSON erfolgt relativ zu bereits bearbeiteten Knoten, d.h. die Definition der Felder im Artikel Mapping erfolgt relativ zur Angabe des Pfades zum Artikel Array.

Der Syntax zur Feldangabe sind die Feldnamen, getrennt durch Schrägstrich, falls es sich um geschachtelte Strukturen handelt. Wird anstelle eines Feldnamens eine Integer Zahl angegeben, wird ein Array angenommen und das 0-basierte Element aus dem Array verwendet.

Außerdem kann ein Element in einem Array in der Notation [type=DOCUMENTS] erfolgen. Dann wird das Element aus dem Array verwendet, das ein Property type hat, das den Wert DOCUMENTS besitzt.

Alle gefundenen Produkte werden mit dem Status im Parameter Status (im Screenshot NEW) in einen Katalog beim gewählten Lieferanten im Screenshot 36 eingefügt. Dabei wird immer der letzte Katalog verwendet. Ist kein Katalog vorhanden, wird automatisch ein Katalog IMPORT unter dem Lieferanten angelegt.

Aktuell werden folgende Felder aus diesem ersten Call übernommen:

CODE
externalid:product_id
itemname:name/0/value
descriptionshort:name/0/value
description:description/0/value
category:category_ids/0

Im Schritt ID 106 wird für jedes Produkt im gewählten Katalog einmal das API aufgerufen, um die Produktdaten zu ergänzen:

image-20260330-111214.png

Der im Parameter Url definierte API Aufruf wird an der Stelle {0} durch die jeweilige Lieferantenartikelnummer ersetzt.

In diesem Fall wird kein Array zurückgegeben, weshalb sich das Mapping auf das komplette JSON Dokument bezieht.

Aktuell werden diese Felder aus dem JSON in den Lieferantenkatalog übernommen:

CODE
externalid:result/id
weight:result/gross_weight
orderunit:result/base_unit_of_measure/0/id
height:result/packagings/0/height
width:result/packagings/0/width
length:result/packagings/0/length
coverurl:result/asset_groups/[type=PHOTOS]/assets/0/url/0/value
moq:result/operational_data/delivery_unit
customsnumber:result/operational_data/commodity_code
countryoforigin:result/operational_data/country_of_origin

Außerdem kann die Aktion aus dem JSON auch ein Array mit Merkmalen extrahieren und ein Array mit Dokumenten, wenn der Pfad zum Array unten definiert ist. Die Inhalte für die Tabellen itemimportproperties und itemimportfiles werden dann unten auf Felder im JSON gemapped. Ein Import erfolgt nur, wenn sowohl der Pfad auf das Array, als auch die benötigten Felder innerhalb der Tabellen definiert sind.

Im Schritt 107 werden die importierten Produkte gegen andere bereits manuell importierte Produkte gestürzt, um doppelte Produkte zu verhindern. Dazu wird eine innerhalb der SKATECH Datenbank definierte Stored Procedure aufgerufen.

image-20260330-111845.png

Die Routine sucht mit den Herstellerartikelnummern und einer von SKATECH bereitgestellten Mapping Tabelle nach bisher bereits importierten Verkaufsartikeln und hängt diese an die per API importierten Produkte. Wenn es durch die Mapping Tabelle einen wechsel in der Herstellerartikelnummer gegeben hat, wird das im Verkaufsartikel geändert.

Im Schritt ID 108 wird das generieren von Verkaufsartikeln automatisiert aufgerufen:

image-20260330-112202.png

Für den Import der Semikron Daten wurde dieser Workflow implementiert:

Workflow Definition TEST

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.