5 Endpunkte
Listen
GET /api/{klasse-plural}Wird verwendet, um Objekte eines Typs aufzulisten. Bspw. können alle Veranstaltungen aufgelistet werden mit /api/veranstaltungen. Klassennamen sind immer im Plural, also z. B. veranstaltungen, anmeldungen, kontakte, …
Abfragen
Sowohl die Ergebnismenge (welche Objekte angezeigt werden) als auch die angezeigten Felder werden bestimmt durch die Abfrage, die verwendet wird. Eine Anfrage kann Filter, Gruppierungen und Aggregationen beinhalten. Abfragen sind das API-Äquivalent zu Reports in der GUI.
Über das in der Schnittstelle hinterlegte Berechtigungsset wird bestimmt, welche Abfragen zur Verfügung stehen, und damit auch, welche Objekte aufgelistet werden können. Wenn keine Abfrage explizit angegeben wird, wird versucht, die allgemeingültigste Abfrage zu verwenden. Für größtmögliche Stabilität empfehlen wir, immer eine Abfrage per Autowert anzugeben.
Eine Abfrage wird per Name oder (besser) Autowert mit dem GET-Parameter "abfrage" angegeben:
GET /api/{klasse-plural}?abfrage=Alle%20VeranstaltungenGET /api/{klasse-plural}?abfrage=cmx_4d6ff7ab961ddDie verwendete Abfrage wird immer in "abfrage" angegeben.
Das Antwortformat sieht wie folgt aus:
{ "seitenindex": 1, "zeilen": 100, "zeilen_gesamt": 242, "seiten_gesamt": 3, "vorherige_seite": null, "naechste_seite": { "http_method": "GET", "url": "https://beispiel.org/api/veranstaltungen?abfrage=cmx_4d6ff7ab961dd&seitenindex=2" }, "abfrage": { "autowert": "cmx_4d6ff7ab961dd", "liste": { "http_method": "GET", "url": "https://beispiel.org/api/veranstaltungen?abfrage=cmx_4d6ff7ab961dd" }, "details": { "http_method": "GET", "url": "https://beispiel.org/api/query/cmx_4d6ff7ab961dd" }, "name": "Alle Veranstaltungen" }, "daten": [ { "autowert": "cmx6a20274981970", "nummer": "213.003", "beginn_datum": "2026-12-03", "beginn_uhrzeit": "10:00:00", "anzahl_freie_plaetze": 2, // [...] "link": { "http_method": "GET", "url": "https://beispiel.org/api/veranstaltung/cmx6a20274981970" } }, // [...] ], "methoden": { "erstelle": { "http_method": "POST", "url": "https://beispiel.org/api/veranstaltung" } }}Listen werden immer in Seiten von 100 Einträgen unterteilt. Mit dem GET-Parameter seitenindex kann auf die Seiten zugegriffen werden. Die Endpunkte zur nächsten und vorherigen Seite werden auch als Navigationsobjekt zurück gegeben. Bei jedem aufgelisteten Objekt wird der Endpunkt für die Detailinformationen ebenfalls unter link als Navigationsobjekt. Verfügbare Klassenmethoden (ohne Bezug auf ein bestimmtes Objekt) sind ebenfalls als Navigationsobjekte unter methoden aufgelistet.
Details eines Objektes
GET /api/{klasse}/{autowert}Listet alle verfügbaren Attribute und deren Werte eines Objektes auf, sowie den eigenen Endpunkt, die Endpunkte von Kindlisten und die Endpunkte von Methoden. Hier wird der Singular verwendet, also z. B.
/api/veranstaltung/cmx682de38637859.{ "daten": { "aktiv": true, "aktuelle_teilnehmerzahl": 3, "ampeltext": "keine freien Plätze. Anmeldung auf Warteliste möglich.", "beginn_datum": "2026-05-21", "beginn_uhrzeit": "10:00:00", "f_bild": "cmx65a68ce9c0e86", "geprueft_am": null, "geprueft_von": "", "letzte_statusaenderung": "2025-05-21T16:37:10+02:00", "name": "Hanne’s und Bärbel’s Strickkurs 🧶", "nummer": "213.002" // ... }, "link": { "http_method": "GET", "url": "https://beispiel.org/api/veranstaltung/cmx682de38637859" }, "methoden": { "aktualisiere": { "http_method": "PUT", "url": "https://beispiel.org/api/veranstaltung/cmx682de38637859" }, "loesche": { "http_method": "DELETE", "url": "https://beispiel.org/api/veranstaltung/cmx682de38637859" } }, "kindlisten": { "Anmeldungen": { "http_method": "GET", "url": "https://beispiel.org/api/veranstaltung/cmx682de38637859/anmeldungen", "get_parameter": [ { "name": "seitenindex", "optional": true, "typ": "number" }, { "name": "abfrage", "optional": true, "typ": "string" } ] } // ... }}Kindlisten
GET /api/{klasse}/{autowert}/{kindklasse-plural}Listet Kindobjekte eines Objektes auf, also beispielsweise alle Anmeldungen zu einer Veranstaltung. Das Rückgabeformat ist das gleiche wie bei normalen Listen, nur ohne Methoden.
Klassenmethoden
GET/POST/PUT /api/{klasse}/{methodenname}Klassenmethoden sind Methoden, die sich nicht auf ein bestimmtes Objekt beziehen, oder das Objekt der Klasse erst erstellen (bspw. Import aus einem bestimmten Format). Die zu verwendende HTTP-Methode und GET-Parameter werden über das Endpunkt-Objekt mitgeteilt, die zu übertragenden Daten und das Antwortformat ist von der konkreten Methode abhängig. Zukünftig verfügbar werdende Methoden werden nach Möglichkeit in dieser Dokumentation aufgelistet.
Objektmethoden
GET/POST/PUT /api/{klasse}/{autowert}/{methodenname}Diese Methoden beziehen sich auf ein bestimmtes Objekt. Ansonsten gilt dasselbe wie für Klassenmethoden.
Erstellen von Objekten
POST /api/{klasse}Erstellt ein Objekt von der angegebenen Klasse. Es werden alle Standardwerte befüllt. Im Anfrage-Body können Attribute mit zu setzenden Werten angegeben werden, die direkt nach dem Erstellen gesetzt werden sollen:
{ "name": "Hanne’s und Bärbel’s Strickkurs",} Schlüssel = Attributname. Wenn die Werte nicht gesetzt werden können, wird das Objekt nicht erstellt. Das erstellte Objekt wird im Anschluss zurückgegeben.
POST /api/{klasse}/{autowert}/{kindklasse}Erstellt ein Objekt der Kindklasse, im Kontext des angegebenen Objektes. Bspw:
POST /veranstaltung/cmx682de38637859/anmeldung erstellt eine Anmeldung im Kontext der Veranstaltung mit dem gegebenen Autowert. Das heißt, dass die Verknüpfung der Anmeldung zur Veranstaltung schon automatisch gesetzt wird.Löschen von Objekten
DELETE /api/{klasse}/{autowert}Löscht das angegebene Objekt. Es werden auch die zugehörigen Kindobjekte mitgelöscht, etwa Termine beim Löschen einer Terminserie.
Setzen von Werten
PUT /api/{klasse}/{autowert}Setzt die im Body angegebenen Werte. Wenn ein Fehler auftritt, werden keine der angegebenen Werte gesetzt (also entweder wird alles oder nichts gesetzt, keine Teilmenge). Format des Anfrage-Bodys ist wie beim Erstellen von Objekten.
