Anlegen und löschen von Gruppen über API
-
Use Case:
Ich möchte über die API Schnittstelle automatisiert jeden Sonntag eine neue Veranstaltungsgruppe anlegen und die vier Wochen alte Veranstaltungsgruppe samt Personen, die seit vier Wochen nicht mehr da waren, löschen lassen.Problem:
In der Swagger UI ist kein REST Call fürs Anlegen und Löschen von Gruppen dokumentiert. Zudem erhalte ich über den REST Call /grouphomepages/{hash} nur die aktuell sichtbaren Veranstaltungen, aber nicht die abgeschlossenen Veranstaltungen.Anforderung:
Für die Durchführen des Use Cases benötigt man zwei zusätzliche REST Calls- POST groups (Create new group)
- DELETE groups/{id} (Delete group)
Optional: - GET /grouphomepages/{hash} gibt auch abgeschlossene Veranstaltungen im JSON zurück (wobei man den Call dann per Login absichern sollte)
-
@markusp hi, da habe ich inzwischen ausführlichst daran gearbeitet ...
du musst für das Anlegen der gruppen das V1 api bemühen.
Vielleicht wirst du https://github.com/bwl21/CT-API-Tools fündig. In diesem Repository lege ich meine Versuchte zur Nutzung des API ab. Es ist natürlich nicht "production ready" aber es demonstriert die Durchstiche ...
Vor allem demonstriert es die einfache handhabung des V1 und des V2 API.
Ansonsten kriegt man die notwendign V1 calls raus, indem man im Browser bei den Development tools den Network tab aktiviert und dann die Funktion manuell ausführt.
-
@bwl21
danke dir, ich werde es mir mal anschauen.
Leider habe ich mit PHP überhaupt keine Erfahrung, ich wollte es mit C# umsetzen. Mal schauen, wie es dann bewerkstelligen kann.Wäre trotzdem schön, wenn es in der neuen API Umgebung auch verfügbar ist.
-
@markusp es wird auf jeden Fall auch in die neue API kommen, das ist allerdings eine Frage der Zeit
-
@markusp vermutlich kannst du das Prinzip übertragen. Das ist ja im wesentlichen eine Spielwiese um API - Anwendungen zu prototypen.
Der Ansatz hier ist, keinen Wrapper um die API zu bauen, sondern das Absetzen von Requests so zu standardisieren, dass man mit der vorhandenen Dokumentation schnell was bauen kann.
Im wesentlichen sind das die Methoden in ct_apitools--helper.inc.php :
CTV1_sendRequestMultipart CTV1_sendRequest CTV2_sendRequest CTV2_sendRequestWithPagination CT_login CT_loginAuth CT_logout
Das gibt dir vielleicht das Muster vor, das helfen könnte.
ctcli.php ist das aufrufprogramm, welches "kommandos" aus
src
inkludiert. Dabei gibt es Konventionen:- de Request wird als Array beschrieben (
$report
) - das Ergebnis wird in den Request eingetragen
- ctcli schreibt das ergebnis in das verzeichnis
responses
Im einfachsten Fall sieht so ein Kommando dann so aus:
$report = [ 'url' => $ctdomain . '/?q=churchdb/ajax' , 'method' => "POST", 'data' => ['func'=>'getMasterData'], 'response' => "???" ]; $report['response'] = CT_APITOOLS\CTV1_sendRequest($ctdomain, $report['url'], $report['data']);
- de Request wird als Array beschrieben (
-
@bwl21
Dein Projekt war schon einmal sehr hilfreich. Ich habe die API V1 Aufrufe erstmal mit Postman ausprobiert um eine grobe Ahnung vom Aufbau zu bekommen. Dabei ist mir aber aufgefallen, dass die https://api.church.tools/ Doku nicht mehr aktuell ist, aber das wurde ja schon in anderen Forumseinträge erwähnt. Der Tipp mit den Development Tool war gut, da konnte ich dann die aktuellen Parameter herausfinden.Dann sollte ich das ohne Probleme mit der alten API auch hinbekommen, muss ja nur alles einmal vorher mit dem Development Tool durchspielen und die richtigen Daten heraus extrahieren.
-
@markusp ja das stimmt. Die ist nicht aktuell. Ich gehe so vor, dass ich in CT einen Vorgang durchspile und dabei mit den Chrome Developertools / Netzwerk beobachte, was passiert.
Da kommt man sehr schnell zum ziel. Bei Fragen hier im Schnittstellenforum posten ...