API-Schnittstelle zu VereinOnline

Die API-Schnittstelle ermöglicht den Abruf der Daten per JSON. Der Web-Server fragt dabei im Hintergrund den VereinOnline-Server an. Die API-Schnittstelle muss zunächst freigeschaltet sein.

Anschließend benötigt Sie einen entsprechend berechtigten Benutzerzugang (wie ein normales Mitglied mit Userlogin, Passwort un einer zugeordneten Rollen mit den gewünschten Rechten, z.B. Veranstaltungen lesen usf.).

Es existiert zudem ein WordPress-Plugin, welches genau dieses API nutzt und selbst WordPress-Tags bereitstellt (siehe unten).

Die Erklärung erfolgt im Nachfolgendem anhand von PHP, dies ist aber nur beispielhaft zu sehen (auch per Javascript ist die Nutzung alternativ mit Hilfe der jQuery-Bibliothek einfach möglich):
  jQuery.ajax(
  {
    type: 'GET',
    crossDomain: true, 
    url: ' https://www.vereinonline.org/IHRVEREIN/?json&function=...',
    success: function(result) { ... },
    error: function(r,e,txt) { ... } 
  });

Funktionen der Schnittstelle

Der PHP-Code wird am Server ausgeführt.



Zentrale Variablen (für alle nachfolgenden Aufrufe wichtig)
$url = "https://www.vereinonline.org/IHRVEREIN/";
$usr = "...";   // der API-Benutzername mit entsprechenden Rollenrechten
$pwd = "...";   // das zugehörige Passwort
$token = "A/$usr/".md5($pwd);

Abruf Mitgliederliste

ArtNameBeschreibung
MethodennameGetMembers
Übergabeparameterfelderoptional:
Liste der zusätzlich angefragten Felder,
Standard:
id,vorname,nachname,firma
filteroptional:
SQL-Ausdruck zur Einschränkung der Datensätze, Felder aus der Mitglieder-Feldliste oder "rolle"=rollenid
rolleoptional:
Einschränkung auf eine Rolle, z.B. "Mitglieder"
sortoptional:
Angabe von Feldern zur Sortierung. Standard: nachname, vorname
RückgabeparameterArrayListe Datensätze
spezial: fotourl

zum Beispiel alle Mitglieder, deren Nachname mit Mü beginnen:
$daten=VereinOnlineRequest($url, "GetMembers", array("filter"=>"nachname LIKE 'Mü%'"), $token);
if ($daten->error!="") 
{
   echo $daten->error."<BR>";
}
else
{
   foreach($daten as $mitglied)
   {
      echo "ID=".$mitglied->id.", ";
      echo "Name=".$mitglied->name."<BR>";
   }
}

Abruf aller Daten eines Mitglieds

ArtNameBeschreibung
MethodennameGetMember
ÜbergabeparameteridID der Mitglieds
RückgabeparameterObjektAlle Daten des Mitglieds
vorname: ..
nachname: ..
..
key_extrafeld1: ..
..

Zum Beispiel das Mitglied mit der ID=37303:
$daten=VereinOnlineRequest($url, "GetMember", array("id"=>37303), $token);
if ($daten->error!="") 
{
   echo $daten->error."<BR>";
}
else
{
   echo "ID=".$daten->id.", ";
   echo "Vorname=".$daten->vorname.", ";
   echo "Nachname=".$daten->nachname.", ";
   echo "Strasse=".$daten->p_strasse.", ";
   echo "Ort=".$daten->p_ort."<BR>";
   //... viele weitere Daten!
}

Abruf Veranstaltungsliste

ArtNameBeschreibung
MethodennameGetEvents
Übergabeparametertypoptional
1,öffentliche Veranstaltung,11,interne Veranstaltung
100… eigene Typen
Ohne Angabe: alle ausser 11
filteroptional:
SQL-Ausdruck zur Einschränkung der Datensätze
jahroptional:
Jahr der Darstellung oder "zukunft" für alle zukünftigen Termine oder "vergangenheit" für vergangene Termine
(zukunft12 für alle ab in 12 Monaten, aktuellermonat,aktuellesjahr,naechstermonat)
gruppenidoptional:
nur Gruppentermine der angegebenen Gruppe (ID)
Falls "#gruppenid#, dann wird der Wert dem Url-Parameter "id" entnommen,
monatoptional:
nur Termine aus dem angegebenen Monat (Format: YYYYMM)
abmonatoptional:
nur Termine ab dem angegebenen Monat (Format: YYYYMM)
kostenfremdoptional:
nur ein Kostenbereich (z.B. 1000-2000
searchoptional:
Suche in den Feldern: titel, beschreibung, ort
RückgabeparameterArrayListe Datensätze
zusätzlich:
anmeldungen: Anzahl Anmeldungen
freieplaetze: Anzahl der noch freien Plätze

Hinweis: Es werden nur öffentliche Termine geliefert (Feld "Sichtbarkeit")!

$daten=VereinOnlineRequest($url, "GetEvents", array(), $token);
if ($daten->error!="")
{
   echo $daten->error."<BR>";
}
else
{
   foreach($daten as $veranstaltung)
   {
      echo "ID=".$veranstaltung->id.", ";
      echo "Datum=".$veranstaltung->datum.", ";
      echo "Titel=".$veranstaltung->titel."<BR>";
   }
}

Abruf aller Daten einer Veranstaltung

ArtNameBeschreibung
MethodennameGetEvent
ÜbergabeparameteridID der Veranstaltung
typoptional
1,öffentliche Veranstaltung,11,interne Veranstaltung
100… eigene Typen
RückgabeparameterObjektAlle Daten der Veranstaltung
zusätzlich:
anmeldungen: Anzahl Anmeldungen
freieplaetze: Anzahl der noch freien Plätze
gruppenname: Name der veranstaltenden Gruppe

Zum Beispiel die Veranstaltung mit der ID=18448:
$daten=VereinOnlineRequest($url, "GetEvent", array("id"=>18448), $token);
if ($daten->error!="")
{
   echo $daten->error."<BR>";
}
else
{
   echo "ID=".$daten->id.", ";
   echo "Datum=".$daten->datum.", ";
   echo "Titel=".$daten->titel.", ";
   echo "Ort=".$daten->ort.", ";
   echo "Zeit=".$daten->zeit."<BR>";
   //... viele weitere Daten!
}

Abruf von Anmeldungen

ArtNameBeschreibung
MethodennameGetRegistrations
ÜbergabeparameteridID der Veranstaltung
RückgabeparameterArrayListe Datensätze:
veranstaltungid
vorname
nachname
geburtstag
email
adresse
firma

Abruf der zentralen Kalender-Daten eines Monats

ArtNameBeschreibung
MethodennameGetCalendar
ÜbergabeparametermMonat
yJahr
typoptional
1,öffentliche Veranstaltung,11,interne Veranstaltung
100… eigene Typen
Rückgabeparameteroffset1. Tag des Monats (0…6)
tageAnzahl Tage des Monats
text"Monatsname Jahreszahl"
tagListe von Tagen, an denen Veranstaltungen stattfinden
idList der IDs zu den Veranstaltungen aus "tag"
datumListe zu Datumswerten
titelListe der Veranstaltungstitel (bei mehr als 1 Termin pro Tag: "X Termine"

Hinweis: Es werden nur öffentliche Termine geliefert (Feld "Sichtbarkeit")!

Abruf aller aktuellen Meldungen

ArtNameBeschreibung
MethodennameGetNews
Übergabeparameterfilteroptional:
SQL-Ausdruck zur Einschränkung der Datensätze
alle=jaoptional:
liefert auch bereits (gültig bis) abgelaufene News.
maximaloptional:
maximale Anzahl der News
idoptional:
nur diese ID laden
RückgabeparameterArrayListe Datensätze inkl. Extrafelder

Falls mit zugeordneter Veranstaltung:
zusaätzliche Felder:
veranstaltungtitel, veranstaltungdatum, veranstaltunganztage"]=$recVA["anzahltage

Hinweis: Es werden nur gültige öffentliche News zurückgegeben (gültig ab/bis, keine Rollen/Gruppen-Einschränkung, extern sichtbar)

Abruf von Rechnungsdaten

ArtNameBeschreibung
MethodennameGetRechnung
ÜbergabeparameteridID der Rechnung
RückgabeparameterObjektAlle Daten der Rechnung

Abruf aller Gruppen

ArtNameBeschreibung
MethodennameGetGroups
Übergabeparametertypoptional:
"v" nur Veranstaltungs-Gruppen
RückgabeparameterArrayListe Datensätze

Abruf von Bildergalerie

ArtNameBeschreibung
MethodennameGetPictures
RückgabeparameterArrayListe Datensätze:
id
datum
titel
bilder
text

Abruf von Shop-Artikeln

ArtNameBeschreibung
MethodennameGetShop
Übergabeparametermaximaloptional: maximale Menge Datensätze
RückgabeparameterArrayListe Datensätze aller verkaufbaren Artikel (alle Felder und Extrafelder, auch "bestand")

Abruf von Daten aus flexiblen Listen

ArtNameBeschreibung
MethodennameGetList
ÜbergabeparameteridID der flexiblen Liste
filteroptional: ein Wert im Datensatz, z.B. "mitglied=1234"
RückgabeparameterArray von Objektenje Liste mit "key=wert"

Anlage eines Datensatzen in einer flexible Liste

ArtNameBeschreibung
MethodennameCreateListData
ÜbergabeparameteridID der flexiblen Liste
POST-DatenFELDNAME1=WERT&FELDBAME2=WERT&DATEUFELDNAME1=filename|content&DATEUFELDNAME2[]=filename|content&DATEUFELDNAME2[]=filename|content
Rückgabeparameterid des Datensatzes

Anlage eines Mitglieds

ArtNameBeschreibung
MethodennameCreateMember
Übergabeparametervorname
nachname
...
rolle
gruppe
key_FELDNAME
Daten
Rückgabeparameterid des Datensatzes

Prüfung eines Logins (1)

ArtNameBeschreibung
MethodennameVerifyLogin
ÜbergabeparameteruserUserlogin
passwordPasswort
result="id": als Ergebnis wird die "id" geliefert statt vorname/nachname
RückgabeparameterStringfalls Fehler leer, ansonsten: "nachname, vorname"

Prüfung eines Logins (2)

ArtNameBeschreibung
MethodennameCheckLogin
HinweisAufruf nur erlaubt wenn zuvor authentifizert
ÜbergabeparameteruserUserlogin
passwordPasswort
RückgabeparameterArray mit "email","vorname","nachname","token"falls Fehler Array mit "error"

Zentrale Funktion

function VereinOnlineRequest($url, $funktion, $daten, $token)
{
   $url.="?json";
   $url.="&function=$funktion";
   foreach($daten as $k=>$v) $url.="&$k=".urlencode($v);
   $url.="&token=$token";

   $curl=curl_init();
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   return json_decode(curl_exec($curl));
}