Import von Stationspreisdaten

 

Über die externe Anwendungsprogrammier-Schnittstelle (API) kann eine Preisanforderung auch direkt importiert werden.

 

Hinweis: Eine importierte Preisanforderung durchläuft wie üblich die Preisautomatik und das Regelwerk.

Ausnahme: Der API-User hat die Rolle "Preismanager". In diesem Fall wird die Preisanforderung direkt umgesetzt.

 

 

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

 

 

 => Erzeugen des API-Autorisierungsschlüssels

 

 

 Import von Stationspreisdaten im JSON-Format  (POST) (PriceImportService): Preisdaten (Preisanforderung) pro Station einzeln schicken (PriceRequest)

 

Hinweis: Für den Import der Stationspreise werden die StationIDs der Stationen benötigt. Diese können mit dem => externen Abruf von Stationsdaten abgefragt werden.

 

 

Beispiel-Programmierung (in C#):

 

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

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

            request.Accept = "application/json";

           request.Method = "POST";

            request.ContentType = "application/json";

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

 

// date ISO 8601 like in Javascript toJSON()

            var local = new DateTime(2015, 10, 5, 18, 0, 0 );

            var changeDate = local.ToUniversalTime().ToString("o");

 

            // Z is the Zone designator for zero UTC offset

            // without Z i must add offset

            var localChangeDate = local.ToString("yyyy-MM-ddTHH:mm:ss+02:00");

 

            using (var requestStream = request.GetRequestStream())

            using (var writer = new StreamWriter(requestStream))

            {

                var content = @"{"+

                    "stationId:'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', " +

                    //"changeDate: '"+ localChangeDate+ "', "+

                    //"transferTime: xx, "+

                    "prices:["+

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

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

[mandantenname]

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

WebApiKey

API-Autorisierungsschlüssel

StationId

Stations-ID

productId

Produktbezeichnung (z.B. Super)

price

Produktpreis (3 Dezimalstellen, Trennung durch Punkt)

optional:
changeDate

ohne => sofort
Umstellungsdatum:  als ISO 8601 string (UTC !)

optional:

transferTime

ohne => sofort
0 : zum Umstellungszeitpunkt
>0 .. 300: Minuten vor der Umstellung

 

 

 

 

 

 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: 11.07.2016  -  Autor: Frank-Olaf Nagel