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.

Die Erklärung erfolgt im Nachfolgendem anhand von PHP, dies ist aber nur beispielhaft zu sehen.


Nutzung per PHP:
$url = "https://www.vereinonline.org/IHRVEREIN/";
$usr = "...";   // der API-Benutzername mit entsprechenden Rollenrechten
$pwd = "...";   // das zugehörige Passwort
print_r(VereinOnlineRequest($url, "GetMembers", array(), $usr, $pwd));

function VereinOnlineRequest($url, $funktion, $daten, $usr, $pwd)
{
   $url.="?json";
   $url.="&function=$funktion";
   foreach($daten as $k=>$v) $url.="&$k=".urlencode($v);
   $url.="&token=A/$usr/".md5($pwd);
   $curl=curl_init();
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
   return json_decode(curl_exec($curl));
}

Nutzung per JavaScript: (mit Hilfe der jQuery-Bibliothek):

  jQuery.ajax(
  {
    type: 'GET',
    crossDomain: true, 
    url: ' https://www.vereinonline.org/IHRVEREIN/?json&function=GetMembers',
    success: function(result) { ... },
    error: function(r,e,txt) { ... } 
  });


Funktionen der Schnittstelle


Abruf Mitgliederliste: "GetMembers"

ArtNameBeschreibung
MethodennameGetMembers
(analog "GetContacts" für externe Kontakte)
Übergabeparameterfelder optional:
Liste der zusätzlich angefragten Felder,
Standard:
id,vorname,nachname,firma
filter optional:
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"
gruppeoptional:
Einschränkung auf eine Gruppe, z.B. "Tennis"
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: "GetMember"

ArtNameBeschreibung
MethodennameGetMember
(analog "GetContact" für externe Kontakte)
ÜbergabeparameteridID der Mitglieds
RückgabeparameterObjektAlle Daten des Mitglieds
vorname: ..
nachname: ..
..
key_extrafeld1: ..
..
rollen: ..
gruppen: ..

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: "GetEvents"

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. Falls ID+ (z.B. 123+), dann werden auch alle Veranstaltungen der Untergruppen zurückgegeben.
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: "GetEvent"

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: "GetRegistrations"

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: "GetNews"

ArtNameBeschreibung
MethodennameGetNews
Übergabeparameteralle=jaoptional:
liefert auch bereits (gültig bis) abgelaufene News.
maximaloptional:
maximale Anzahl der News
idoptional:
nur diese ID laden
conditionoptional:
feld=wert
RückgabeparameterArrayListe Datensätze inkl. Extrafelder

bodyteaser liefert die ersten Zeichen der Nachricht (gemäß Zeichenzahl in der Nachricht)

Falls mit zugeordneter Veranstaltung:
zusaätzliche Felder:
veranstaltungtitel, veranstaltungdatum, veranstaltunganztage

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



Abruf aller öffentlichen Newsletter: "GetNewsletter"

ArtNameBeschreibung
MethodennameGetNewsletter
RückgabeparameterArrayListe mit: datum, titel, html, beitraege

"beitraege" ist ein Array von IDs, das API "GetNewsletterBeitrag" kann einen Beitrag holen!

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



Abruf von Rechnungsdaten: "GetRechnung"

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


Abruf aller Gruppen: "GetGroups"

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


Abruf von Bildergalerie: "GetPictures"

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


Abruf von Shop-Artikeln: "GetShop"

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


Abruf der flexiblen Listen-Defintionen: "GetLists"

ArtNameBeschreibung
MethodennameGetLists
RückgabeparameterArray von Objektenje Liste mit: id,name,schemaid,schemaname


Abruf von Daten aus flexiblen Listen: "GetList"

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: "CreateListData"

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: "CreateMember"

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


Prüfung eines Logins (1): "VerifyLogin"

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): "CheckLogin"

ArtNameBeschreibung
MethodennameCheckLogin
HinweisAufruf nur erlaubt wenn zuvor authentifizert
ÜbergabeparameteruserUserlogin
passwordPasswort
auth(optional), prüft Rollen/Gruppen-ZUgehörigkeit
z.B. "rolle:ROLLENNAME1,rolle:ROLLENNAME2,gruppe:GRUPPENNAME1"
RückgabeparameterArray mit "email","vorname","nachname","token"falls Fehler Array mit "error"