Import von Wettbewerberpreisdaten

 

Über eine externe Anwendungsprogrammier-Schnittstelle (API) haben Sie die Möglichkeit, Wettbewerberpreisdaten zu importieren.

 

Hinweis: Die Firma HUTH Elektronik Systeme GmbH ist nicht als sogenannter Verbraucherinformationsdienst (VID) bei der Markttransparenzstelle (MTS) registriert. Daher stellt HUTH nur die Importoption für die Preise zur Verfügung, nicht aber die Wettbewerberpreise selber.

Wir nennen Ihnen gerne einen externen Dienstleister, der den Preisimport über die HUTH API-Schnittstelle übernimmt und einrichtet.

 

 

Die Programmanweisungen werden im JSON-Format durchgeführt. Beispiele in C# finden Sie unten.

 

 

 => Erzeugen des API-Autorisierungsschlüssels

 

 

 Abruf der Wettbeweber-Stationen (StationIDs) im JSON-Format (GET) (PriceImportService)

 

Mit dem oben erzeugten API-Autorisierungsschlüssel haben Sie nun die Möglichkeit, die Wettbewerberpreise über einen programmierten Abruf zu importieren:

 

Beispiel-Programmierung (in C#):

 

const tring address = "https://webapps.huth.org/[mandantenname]/api/PriceImportService/Competitors";

            var request = (HttpWebRequest)WebRequest.Create(address);

            request.Accept = "application/json";

            request.Headers.Add("WebApiKey", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

            var response = request.GetResponse();

            var responseStream = response.GetResponseStream();

            if (responseStream != null)

            {

                using (var reader = new StreamReader(responseStream))

                {

                    Console.WriteLine(reader.ReadToEnd());

                }

            }

 

Result (Beispiel mit Adresse [optionales Feld] und Gültigkeitszeitraum Wettbewerberpreisdifferenz [optionales Feld];  Darstellung mit FIDDLER):

 

 

 

Feldbezeichnung

Erläuterung

[mandantenname]

kundenspezifische (Händler-)Bezeichnung (wird bei der Installation von HUTH vergeben)

address - city

Ort der Wettbewerberstation

address - houseNumber

(Straße)Nr. der Wettbewerberstation

address - location

Geo-Koordinaten der Wettbewerberstation

address - street

Straße der Wettbewerberstation

address - zipCode

PLZ der Wettbewerberstation

id

Stations-ID der Wettbewerberstation

name

Name der Wettbewerberstation

priceReferences - priceDifference

Preisdifferenz (Offset) zum Preis der beobachtenden Station

priceReferences - productId

Name des referenzierten Produkts der beobachtenden Station

priceReferences - stationId

Stations-ID der beobachtenden Station

priceReferences - stationName

Name der beobachtenden Station

validityPeriod - endPeriod

Gültigkeitszeitraum Wettbewerberpreisdifferenz Ende Datum

validityPeriod - endTime

Gültigkeitszeitraum Wettbewerberpreisdifferenz Ende Uhrzeit

validityPeriod - startPeriod

Gültigkeitszeitraum Wettbewerberpreisdifferenz Start Datum

validityPeriod - startTime

Gültigkeitszeitraum Wettbewerberpreisdifferenz Start Uhrzeit

validityPeriod - weekDays

Gültigkeitszeitraum Wettbewerberpreisdifferenz Wochentag (Wert wird als 2er-Potenz errechnet, beginnend bei Montag 2h0; bei mehreren Tagen als Summe der 2er-Potenzen)

productIdentifier

Produktname(n) der Wettbewerberstation

 

 

 

 

 

 Import der Wettbewerber-Preise im JSON-Format  (POST) (PriceImportService) : Wettbewerberstationen einzeln schicken (Prices)

 

Für den Import der Wettbewerber-Preise werden die StationIDs der Stationen benötigt. Diese werden mit o.a. Abruf im Result zurückgegeben.

 

Beispiel-Programmierung (in C#):

 

const string address = "https://webapps.huth.org/[mandantenname]/api/PriceImportService/Prices";

             var request = (HttpWebRequest)WebRequest.Create(address);

            request.Accept = "application/json";

           request.Method = "POST";

            request.ContentType = "application/json";

            request.Headers.Add("WebApiKey", "xxxxxxxxxxxxxxxxxxxxxxxxxxx");

            using (var requestStream = request.GetRequestStream())

            using (var writer = new StreamWriter(requestStream))

            {

                const string content = @"{"+

                                       "stationId:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',"+

                                       "productPrices: [{productId: 'xxxxxx', price: x.xxx}]"+

                                       "}";

                writer.WriteLine(content);

            }

 

            try

            {

                var response = request.GetResponse();

                var responseStream = response.GetResponseStream();

                if (responseStream != null)

                {

                    using (var reader = new StreamReader(responseStream))

                    {

                        Console.WriteLine(reader.ReadToEnd());

                    }

                }

            }

            catch (WebException ex)

            {

                if (ex.Response != null && ex.Status == WebExceptionStatus.ProtocolError)

                {

                    using (var stream = ex.Response.GetResponseStream())

                        if (stream != null)

                        {

                            using (var reader = new StreamReader(stream))

                            {

                                var msg = reader.ReadToEnd();

                                Console.WriteLine(msg);

                            }

                        }

                }

            }

 

 

 

 

Feldbezeichnung

Erläuterung

WebApiKey

API-Autorisierungsschlüssel

StationId

Stations-ID

productId

Produktbezeichnung (z.B. Super)

price

Produktpreis (3 Dezimalstellen, Trennung durch Punkt)

 

 

 

 

 

 

 Import der Wettbewerber-Preise im JSON-Format  (POST) (PriceImportService): Alle Wettbewerberstationen im Block (Array) schicken (PriceGroup)

 

Wenn eine Station mehrere Wettbewerber beobachtet, können die Preise der Wettbewerberstationen auch mit einem Array im POST geschickt werden. Diese Methode stellt sicher, dass bei aktiviertem Wettbewerber-Eingangspuffer immer alle Preise von allen Stationen zum gleichen Zeitpunkt geschickt werden und im Puffer berücksichtigt werden.

 

Beispiel-Programmierung (in C#) für zwei Stationen (beliebig erweiterbar):

 

const string address = "https://webapps.huth.org/[mandantenname]/api/PriceImportService/PriceGroup";

             var request = (HttpWebRequest)WebRequest.Create(address);

            request.Accept = "application/json";

           request.Method = "POST";

            request.ContentType = "application/json";

            request.Headers.Add("WebApiKey", "xxxxxxxxxxxxxxxxxxxxxxxxxxx");

            using (var requestStream = request.GetRequestStream())

            using (var writer = new StreamWriter(requestStream))

            {

                const string content = @"{"+

                                       "stationId:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',"+

                                       "productPrices: [{productId: 'xxxxxx', price: x.xxx}]"+

                                       "}," +

{" +

                                       "stationId:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',"+

                                       "productPrices: [{productId: 'xxxxxx', price: x.xxx}]"+

                                       "}]";

                writer.WriteLine(content);

            }

 

            try

            {

                var response = request.GetResponse();

                var responseStream = response.GetResponseStream();

                if (responseStream != null)

                {

                    using (var reader = new StreamReader(responseStream))

                    {

                        Console.WriteLine(reader.ReadToEnd());

                    }

                }

            }

            catch (WebException ex)

            {

                if (ex.Response != null && ex.Status == WebExceptionStatus.ProtocolError)

                {

                    using (var stream = ex.Response.GetResponseStream())

                        if (stream != null)

                        {

                            using (var reader = new StreamReader(stream))

                            {

                                var msg = reader.ReadToEnd();

                                Console.WriteLine(msg);

                            }

                        }

                }

            }

 

 

 

Feldbezeichnung

Erläuterung

WebApiKey

API-Autorisierungsschlüssel

StationId

Stations-ID

productId

Produktbezeichnung (z.B. Super)

price

Produktpreis (3 Dezimalstellen, Trennung durch Punkt)

 

 

 

 

 

 Mögliche Responses 

 

200 = [OK]

201 = Created (angelegt)

400 = Bad Request (fehlerhafte Anfrage)

401 = Unauthorized  (keine Authentifizierung)

403 = Forbidden (fehlende Berechtigung, z.B. Zugriff von einem Rechner, dessen IP-Adresse nicht auf der Whitelist steht)

404 = Not Found

405 = Method Not Allowed

415 = Unsupported Media Type

500 = Internal Server Error (Server-Fehler)

 

 

 

HUTH Elektronik Systeme GmbH  -  Stand: 07.11.2015  -  Autor: Frank-Olaf Nagel