Ü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