CeviDB API: Unterschied zwischen den Versionen

Aus CeviWiki
Zur Navigation springen Zur Suche springen
K ((Auch Update von vorher))
K (Endpunkte Update)
Zeile 23: Zeile 23:
 
!Beispiel (gid=1, pid=2)
 
!Beispiel (gid=1, pid=2)
 
|-
 
|-
|Gruppen
+
|Gruppen <code><gid></code>
 
|<nowiki>https://db.cevi.ch/groups/</nowiki><gid>.json
 
|<nowiki>https://db.cevi.ch/groups/</nowiki><gid>.json
 
|<nowiki>https://db.cevi.ch/1.json</nowiki>
 
|<nowiki>https://db.cevi.ch/1.json</nowiki>
 
|-
 
|-
|Personen in Gruppe
+
|Personen in Gruppe <code><gid></code>
 
|<nowiki>https://db.cevi.ch/groups/</nowiki><gid>/people.json
 
|<nowiki>https://db.cevi.ch/groups/</nowiki><gid>/people.json
 
|<nowiki>https://db.cevi.ch/1/people.json</nowiki>
 
|<nowiki>https://db.cevi.ch/1/people.json</nowiki>
 
|-
 
|-
|Details zu Person
+
|Details zu Person <code><pid></code>
 
|<nowiki>https://db.cevi.ch/groups/</nowiki><gid>/people/<pid>.json
 
|<nowiki>https://db.cevi.ch/groups/</nowiki><gid>/people/<pid>.json
 
|<nowiki>https://db.cevi.ch/1/people/2.json</nowiki>
 
|<nowiki>https://db.cevi.ch/1/people/2.json</nowiki>
 
|}
 
|}
 
'''Hinweis: '''Wird versucht ohne Gruppen-Angabe auf eine Person zuzugreifen (<code><nowiki>https://db.cevi.ch/people/</nowiki><pid>.json</code>) so wird die Anfrage auf die Haubtgruppe der Person weitergeleitet. Allerdings wird bei dieser Weiterleitung der Query-String ignoriert, so dass ein <code>401 Authorization Required</code> Fehler resultiert. Aus der Fehlermeldung kann jedoch die korrekte <abbr>URL</abbr> bestimmt werden.
 
'''Hinweis: '''Wird versucht ohne Gruppen-Angabe auf eine Person zuzugreifen (<code><nowiki>https://db.cevi.ch/people/</nowiki><pid>.json</code>) so wird die Anfrage auf die Haubtgruppe der Person weitergeleitet. Allerdings wird bei dieser Weiterleitung der Query-String ignoriert, so dass ein <code>401 Authorization Required</code> Fehler resultiert. Aus der Fehlermeldung kann jedoch die korrekte <abbr>URL</abbr> bestimmt werden.

Version vom 23. April 2018, 07:51 Uhr

Die CeviDB bietet eine API, mit der Personen- und Gruppen-Daten aus der Datenbank ausgelesen werden können. Die API erlaubte es aber nicht Daten in der CeviDB zu verändern.

Allgemeine Hinweisee

Die Schnittstelle wird über POST- und GET-Anfragen angesteuert und verwendet JSON als Datenformat. Der Zugriff über die Schnittstelle erfordert die Zugangsdaten eines registrierten Benutzers. Die Rechte der Schnittstelle entsprechen dann denn Rechten des verwendeten Nutzers. Beim Login wird ein user token generiert, das danach bei jeder Anfrage mitgesendet werden muss.

Ablauf einer Abfrage

  1. Login-Anfrage mit eMail und Passwort senden
  2. Aus Antwort user token auslesen
  3. Anfrage für Gruppen- oder Personendaten senden (mit eMail und user token)
  4. Aus Antwort gewünschte Daten auslesen

Wichtig: Passwörter dürfen nicht hardcoded im Programmcode hinterlegt werden. Passwörter im Programmcode sind eine Sicherheitsrisiko. Soll ein Programm ohne Interaktion mit einem Benutzer ausgeführt werden, so kann das user token im Programmcode hinterlegt werden. Gelingt es einem Angreifer das Token auszulesen, so erhält er nur eingeschränkte Lese-Rechte. Ein gestohlenes Passwort würde ihm erlauben, sich mit den vollen Benutzerrechten des Besitzers einzuloggen. Bitte informiert cevidb@cevi.ch, wenn ihr ein Skript erstellt und ein user token hinterlegt.

Erstes Login

Um sich anzumelden, muss ein POST-Request an https://db.cevi.ch/users/sign_in.json gesendet werden. Als Parameter müssen person[email] und person[password] übergeben werden.

Beispiele

TODO

Endpunkte

Endpunkt URL Beispiel (gid=1, pid=2)
Gruppen <gid> https://db.cevi.ch/groups/<gid>.json https://db.cevi.ch/1.json
Personen in Gruppe <gid> https://db.cevi.ch/groups/<gid>/people.json https://db.cevi.ch/1/people.json
Details zu Person <pid> https://db.cevi.ch/groups/<gid>/people/<pid>.json https://db.cevi.ch/1/people/2.json

Hinweis: Wird versucht ohne Gruppen-Angabe auf eine Person zuzugreifen (https://db.cevi.ch/people/<pid>.json) so wird die Anfrage auf die Haubtgruppe der Person weitergeleitet. Allerdings wird bei dieser Weiterleitung der Query-String ignoriert, so dass ein 401 Authorization Required Fehler resultiert. Aus der Fehlermeldung kann jedoch die korrekte URL bestimmt werden.