Die auf JavaScript Object Notation (JSON) basierte API kann genutzt werden, um Daten zwischen verschiedenen Anwendungen auszutauschen. Es sollte, die auf JSON basierte API, nur verwendet werden, wenn der Aufruf der API per SOAP nicht möglich ist. Die auf JSON basierte API wird intern auf die SOAP API umgeleitet, entsprechend wird mehr Serverzeit für die Umwandlung der Aufrufe benötigt.
Siehe dazu auch
API (SOAP Webservice) zur Manipulation der Daten
verwenden
Voraussetzung für den Einsatz der API
Aufruf der API mit JSON
Die API rufen Sie über http://<ihre
_domain>/<installations_verzeichnis>/api/api_json.php im eigenen Script
auf. Im Browser kann dieses Script nicht direkt aufgerufen werden, es wird eine
Fehlermeldung zurückgegeben, denn alle Parameter müssen per HTTP POST
übergeben werden.
Authentifizierung
Für die Authentifizierung wird ein API Key benötigt, diesen finden Sie
unter Menü Benutzer - Eigenes Konto ändern.
Hinweis: Nur die Nutzertypen SuperAdmin und Admin verfügen über einen
API Key, normale Nutzer dürfen nicht per API zugreifen.
Die Authentifizierung erfolgt über einen Header-Eintrag beim HTTP-Aufruf des Scripts api_json.php, der Name des Header lautet APIToken. Nur durch korrekte Übergabe des API Key bei jedem Aufruf wird ein Zugriff auf die gespeicherten Daten erlaubt.
Der API Key selbst erlaubt nur den Zugriff auf die Daten des SuperAdmin oder Admins selbst, nicht auf andere Admin-Nutzer.
Zeichen-Codierung der Daten
Alle Daten werden UTF-8 codiert zurückgegeben bzw. müssen mit der
Codierung UTF-8 übergeben werden, ansonsten kann es zur unvollständigen
Übertragung der Daten kommen bzw. die Aufrufe scheitern komplett.
Header Access-Control-Allow-Origin für die Aufrufe
Für
Cross-Domain-Aufrufe wird der Header-Eintrag Access-Control-Allow-Origin mit dem
Wildcard-Zeichen * verwendet. In der Datei userdefined.inc.php kann bei der
Konstante JS_Access_Control_Allow_Origin ein
http://-Aufruf angegeben werden, welcher nur den Zugriff über die jeweilige
Domain erlaubt.
Siehe dazu auch
Cross-Origin Resource Sharing
Name und Parameter der Funktionen
Rufen Sie die SOAP API über http://<ihre _domain>/<installations_verzeichnis>/api/api.php direkt im Browser auf, es werden dabei alle Funktionen, Parameter und die Beschreibung der Funktionen dargestellt. Für den JSON-Aufruf ersetzen Sie den Punkt zwischen Klassenname und Funktionsname durch 2 Unterstriche __. z.B. api_Common.api_testAPI ändern in api_Common__api_testAPI.
Die Parameter müssen beim JSON-Aufruf in gleiche Reihenfolge und Schreibung übergeben werden, wie diese angezeigt werden. z.B.
api_Recipients.api_createRecipient
=> ändern in api_Recipients__api_createRecipient
angezeigte Input Parameter
apiMailingListId: xsd:int
apiData: xsd:Array
apiarrayGroupsIds: xsd:Array
apiUseDoubleOptIn: xsd:boolean
=> Übergabe als
array("apiMailingListId" => <id der Liste>, "apiData" => array(), "apiarrayGroupsIds" => array(), "apiUseDoubleOptIn" => false)
Datentypen
Folgende Datentypen werden verwendet:
XML Schema Datentyp | Datentyp in PHP und anderen Programmiersprachen |
xsd:string | string |
xsd:int | integer |
xsd:float | float |
xsd:boolean | boolean |
xsd:double | double |
xsd:Array | array |
xsd:datetime | datetime |
Definierte Klassen
Klassenname | Beschreibung |
api_Common | Enthält grundlegende Funktionen, die teilweise nur als Nutzer SuperAdmin aufgerufen werden können. |
api_Mailinglists | Enthält Funktionen zur Manipulation von Empfängerlisten. |
api_Recipients | Funktionen zur Manipulation der Empfänger in den Empfängerlisten. |
api_Users | Enthält Funktionen zum Anlegen und Entfernen von Nutzern. |
api_DistributionLists | Enthält Funktionen für die Verteilerlisten.
Nur nutzbar mit SuperMailingList Professional, SuperWebMailer Professional und SuperWebMailer Enterprise.
|
Nur SuperWebMailer | |
api_Campaigns | Enthält Funktionen für das Erstellen, Ändern und Abrufen
von Statistiken für E-Mailings.
|
api_FUResponders | Enthält Funktionen für das Erstellen, Ändern und Abrufen
von Statistiken für Folow-Up-Auto-Responder.
Nicht in SuperWebMailer Basic nutzbar.
|
Beispiel für eine JSON-Aufruf zur Bestimmung der API Version in PHP
Im api-Verzeichnis finden Sie die Datei json_sample.php diese zeigt den Aufruf verschiedener Funktionen.
Einfaches Beispiel in PHP zur Bestimmung der API Version
<?php # show all errors in browser error_reporting( E_ALL & ~ ( E_DEPRECATED | E_STRICT ) ); ini_set("display_errors", 1); $APIToken = "123456789"; $host = "localhost"; $path_api_json_php = "/newsletter/api/api_json.php"; $port = 80; // 443 for https // XML SOAP request: api_Common.api_getAPIVersion => api_Common__api_getAPIVersion $data = array("api_Common__api_getAPIVersion" => json_encode(array())); $ret = sampleDoHTTPPOSTRequest($host, $path_api_json_php, $data, $port, array("APIToken" => $APIToken)); if( $ret !== false){ if(isValidJson($ret)) { $j = json_decode($ret, true); if(!is_array($j)) print $j; else { if(isset($j["error_code"])) { // is an error? print "An error:\r\n"; print_r($j); } else print_r($j); // no error } } else print_r($ret); } else { print "Request failed / Aufruf gescheitert!"; } /* other helper functions see json_sample.php */ ?>
Beispiel für JSON-Aufruf zur Bestimmung API Version mit JavaScript und JQuery
Im api-Verzeichnis finden Sie die Datei json_javascript_sample.html diese zeigt den Aufruf verschiedener Funktionen.
<html> <head> <title></title> <meta name="generator" content="Edit4Win"> <script src="http://code.jquery.com/jquery-1.12.0.min.js"></script> <script language="JavaScript"> <!-- var APIToken = "123456789"; var host = "http://localhost"; var path_api_json_php = "/newsletter/api/api_json.php"; function TestRequest(){ var data = {api_Common__api_getAPIVersion: JSON.stringify( {} ) }; // SAMPLE 2 var data = {api_Common__api_getRecipientsFieldnames: JSON.stringify( {apiLanguageCode: "de"} ) }; // JQuery decoded values itself when content-type is application/json $.ajax({ url: host + path_api_json_php, cache: false, type: "post", headers: {"APIToken": APIToken}, data: data, success: function(data) { if(data.error == null) { // check for errors if(typeof data !== "object") alert("Success return value: " + data) else{ // for SAMPLE 2 api_Common__api_getRecipientsFieldnames var s = ""; for (var key in data) { s = s + "\r\n" + data[key].fieldname; } alert("Success return value: " + s); } } else alert("Failed:" + data.error + " " + data.error_code) }, error: function(data) { alert("Failed: " + data.status + " " + data.statusText); } }); } //--> </script> </head> <body> <input type="button" name="test" value="Test" onclick="TestRequest()"> </body> </html>
Siehe dazu auch
API (SOAP Webservice) zur Manipulation der Daten
verwenden