normal
Zum Hauptinhalt springen

Activity Streams

Mit Stud.IP Version 3.5 wurde eine neue API zum Erzeugen, Darstellen und Filtern von kontextrelevanten Aktivitäten eingeführt. Diese API kann u.a. dafür genutzt werden um Nutzern einen schnellen Überblick über die für ihn relevanten Information/Aktivitäten zu geben.

Schema "activities"

Activity Streams enthalten Objekte des Typs "activities". Diese geben enthalten eine textuelle Beschreibung der Aktivität, ein Datum, eine (etwas) detailiertere Beschreibung und die Art der Aktivität (das Verb). Aktivitäten beziehen sich auf einen Akteur (in der Regel ein Nutzer), einen Kontext, in dem sie stattfinden, und ein Objekt, auf das sie sich beziehen.

Attribute

AttributBeschreibung
titleknappe Beschreibung der Aktivität: "Wer tut was mit wem/was wo?"
mkdateDatum der Aktivität
contentetwas detailiertere Beschreibung der Aktivität
verbArt der Aktivität
activity-typeTyp der Aktivität

Die verwendeten Verben sind normiert. Der Wertebereich umfasst:

answered, attempted, attended, completed, created, deleted, edited, experienced, failed, imported, interacted, passed, shared, sent, voided

Relationen

Die Relationen sind nicht änderbar und können nur ausgelesen werden.

RelationBeschreibung
actorWenn der Akteur der Aktivität ein Nutzer ist, wird mit dieser Relation auf ihn verwiesen.
contextder Kontext, in dem die Aktivität stattfindet; kann eine der folgenden sein: Veranstaltung, Einrichtung, Nutzer oder System.
objectdas Objekt, mit dem die Aktivität stattfindet; falls möglich wird hier auf eine Route in der JSON:API verwiesen

Alle Aktivitäten auslesen

curl --request GET \
--url https://example.com/jsonapi.php/v1/users/<USER-ID>/activitystream \
--header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"
fetch('https://example.com/jsonapi.php/v1/users/<USER-ID>/activitystream', {
method: 'GET',
mode: 'cors',
headers: new Headers({
'Authorization': `Basic ${btoa('test_autor:testing')}`
})
}).then(response => console.log(response))

Mit dieser Route können die Aktivitäten ausgelesen werden, die für einen Nutzer sichtbar sind. Der Activity Stream wird paginiert ausgegeben. Standardmäßig werden nur Aktivitäten der letzten 6 Monate ausgegeben. Diese Einschränkung kann mit Hilfe des URL-Parameters 'filter' verändert werden.

HTTP Request

GET /users/{id}/activitystream

URL-Parameter

ParameterBeschreibung
filterFiltermöglichkeit der anzuzeigenden Aktivitäten (Zeit und Typ)
includeermöglicht das Inkludieren des Akteurs, des Kontexts und des Objekts in die JSON:API-Antwort
pageEinstellmöglichkeiten zur Paginierung

URL-Parameter 'filter'

curl --request GET \
--url 'https://example.com/jsonapi.php/v1/users/<USER-ID>/activitystream?filter\[start\]=1263078000&filter\[end\]=1409695200&filter[activity-type]=documents' \
--header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"

Mit diesem URL-Parameter kann nach Typ und Datum der Aktivitäten gefiltert werden. Möglich sind folgende Filter:

FilterBeschreibung
filter[start]zeitliche Beschränkung: Start des Abfrageintervalls
filter[end]zeitliche Beschränkung: Ende des Abfrageintervalls
filter[activity-type]nur Aktivitäten dieses Typs/dieser Typen werden zurückgeliefert

Mit Hilfe der Parameter 'start' und 'end' kann das Abfrageintervall verändert werden. Standardmäßig werden alle Aktivitäten der letzten 6 Monate bis zum aktuellen Zeitpunkt zurückgeliefert. Mit 'start' und 'end' können diese Intervallgrenzen beliebig gestaltet werden. Für diese beiden Parameter können nur ganzzahlige Werte angegeben werden, die die Anzahl der Sekunden seit dem 01.01.1970 bis zum gewünschten Zeitpunkt angeben ('unix epoch time').

Der Parameter 'activity-type' schränkt die Aktivitäten nach Typ ein. Mögliche Werte sind:

activity, documents, forum, literature, message, news, participants, schedule, wiki

Um nach mehreren Aktivitätstypen zu filtern, können mehrere dieser Typen durch Komma getrennt verwendet werden.

URL-Parameter 'include'

curl --request GET \
--url 'https://example.com/jsonapi.php/v1/users/<USER-ID>/activitystream?include=actor,context'\
--header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"
WerteBeschreibung
actorinkludiert die Akteure der gelieferten Aktivitäten
contextinkludiert die Kontexte der gelieferten Aktivitäten
objectinkludiert die Objekte der gelieferten Aktivitäten

Der 'include'-Parameter wird der JSON:API-Spezifikation entsprechend verwendet. Es können auch mehrere Werte durch Komma getrennt angegeben werden.

Meta-Informationen

Damit klar ersichtlich ist, welche Filter für die Abfrage galten, werden diese Informationen als Top-Level-'meta'-Objekt zurückgegeben.

Authorisierung

Mit dieser Route kann nur der Nutzer selbst oder Root-Nutzer diejenigen Aktivitäten sehen, die für einen Nutzers sichtbar wären.