Zum Inhalt springen

Nutzer*innen

Nutzer*innen (users) von Stud.IP-Installationen können mit den folgenden Routen abgefragt werden.

Alle Nutzer*innen werden in Stud.IP mit diesem Schema abgebildet. Die id entspricht der in Stud.IP verwendeten user_id. Der Typ ist users.

AttributBeschreibung
usernameder username wird beim Login-Vorgang verwendet
formatted-nameder formatierte Echtname
family-nameder Nachname
given-nameder Vorname
name-prefixevtl. vorangestellte Titel
name-suffixevtl. nachgestellte Titel
permissiondie globale Berechtigungsstufe
emaildie E-Mail-Adresse
auth-pluginArt der Authentifizerung (z.B. ldap)
lockedAccount gesperrt?
lock-commentggf. Sperrhinweis
visibleSichtbarkeitsstatus
matriculation-numberMatrikelnummer
genderGeschlecht
preferred-languageeingestellte Sprache
mkdateErstellungsdatum
chdateÄnderungsdatum
phonedie Telefonnummer
cellphonedie Mobilnummer
addressdie private Adresse
homepagedie URL der Homepage
hobbyHobbies
cvLebenslauf
publicationPublikationen
focusSchwerpunkte
mottoMotto

Die Berechtigungsstufe kann eine der folgenden sein: root, admin, dozent, tutor, autor

Die Sichtbarkeit der Attribute wie phone, homepage, address folgt den Sichtbarkeitseinstellungen, die Nutzer*innen vorgenommen haben.

RelationBeschreibung
activitystreamein Link zum activity stream
blubber-postingsdie Blubber
contactsdie Kontakte
coursesdie Veranstaltungen als dozent
course-membershipsdie Teilnahmen an Veranstaltungen
datafield-entrieszusätzliche Datenfelder
eventsder Terminkalender
institute-membershipsdie Institute
profile-categorieseigene Kategorien im Profil
scheduleder Stundenplan
status-groupsGruppenzuordnungen
status-group-membershipsMitgliedschaften in Gruppen

Dieses Schema bildet die eigenen Kategorien im Profil eines Nutzers ab.

AttributBeschreibung
titleTitel der Kategorie
contentInhalt der Kategorie
priorityAnzeigereihenfolge im Profil
mkdateErstellungsdatum der Kategorie
chdateÄnderungsdatum der Kategorie
RelationBeschreibung
userBesitzer der Kategorie
Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users \
--header "Authorization: Basic `echo -ne "root@studip:testing" | base64`" \

Der Request liefert JSON ähnlich wie dieses:

{
"meta": {
"page": {
"offset": 0,
"limit": 30,
"total": 5
}
},
"links": {
"first": "/?page[offset]=0&page[limit]=30",
"last": "/?page[offset]=0&page[limit]=30"
},
"data": [
{
"type": "users",
"id": "76ed43ef286fb55cf9e41beadb484a9f",
"attributes": {
"username": "root@studip",
"formatted-name": "Root Studip",
"family-name": "Studip",
"given-name": "Root",
"name-prefix": "",
"name-suffix": "",
"permission": "root",
"email": "root@localhost",
"phone": null,
"homepage": null,
"address": null
},
"relationships": {
"activitystream": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/activitystream"
}
},
"blubber-postings": {
"links": {
"related": "jsonapi.php/v1/blubber-postings?filter[user]=76ed43ef286fb55cf9e41beadb484a9f"
}
},
"contacts": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/contacts"
}
},
"courses": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/courses"
}
},
"course-memberships": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/course-memberships"
}
},
"events": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/events"
}
},
"institute-memberships": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/institute-memberships"
}
},
"schedule": {
"links": {
"related": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f/schedule"
}
}
},
"links": {
"self": "jsonapi.php/v1/users/76ed43ef286fb55cf9e41beadb484a9f"
},
"meta": [
]
},
"[...]"
]
}

Dieser Endpoint liefert alle Nutzer*innen im Stud.IP, die mit den credentials des JSON:API-Nutzenden auch in Stud.IP selbst gesehen werden dürfen. Die Ausgabe erfolgt paginiert und kann durch Angabe von Offset und Limit weitergeblättert werden.

GET /users

Terminal-Fenster
curl --request GET \
--url 'https://example.com/jsonapi.php/v1/users?filter[search]=test_autor'\
--header "Authorization: Basic `echo -ne "test_autor:testing" | base64`"
ParameterDefaultBeschreibung
page[offset]0der Offset
page[limit]30das Limit
filter[search]%%%der Suchbegriff, um Nutzer zu finden; mind. 3 Zeichen

Diese Route kann nur von Nutzern der Rechtestufe “root” verwendet werden.

Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users/me \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Der Request liefert JSON ähnlich wie dieses:

{
"data": {
"type": "users",
"id": "205f3efb7997a0fc9755da2b535038da",
"attributes": {
"username": "test_dozent",
"formatted-name": "Testaccount Dozent",
"family-name": "Dozent",
"given-name": "Testaccount",
"name-prefix": "",
"name-suffix": "",
"permission": "dozent",
"email": "dozent@studip.de",
"phone": null,
"homepage": null,
"address": null
},
"relationships": {
"activitystream": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/activitystream"
}
},
"blubber-postings": {
"links": {
"related": "jsonapi.php/v1/blubber-postings?filter[user]=205f3efb7997a0fc9755da2b535038da"
}
},
"contacts": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/contacts"
}
},
"courses": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/courses"
}
},
"course-memberships": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/course-memberships"
}
},
"events": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/events"
}
},
"institute-memberships": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/institute-memberships"
}
},
"schedule": {
"links": {
"related": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da/schedule"
}
}
},
"links": {
"self": "jsonapi.php/v1/users/205f3efb7997a0fc9755da2b535038da"
},
"meta": [
]
}
}

Mit diesem Endpoint bekommt man denjenigen Stud.IP Nutzer, der autorisiert auf diesen Endpoint zugreift – also sich selbst.

GET /users/me

Es werden keine Query-Parameter unterstützt.

Diese Route kann von jedem autorisierten Nutzer verwendet werden.

Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users/<ID> \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Diese Route liefert einzelne, beliebige Nutzende zurück. Unsichtbare Nutzende können sich allerdings nur selbst sehen.

GET /users/{id}

Es werden keine Query-Parameter unterstützt.

Man kann sich selbst sehen. root darf alle Nutzenden sehen. Gesperrte und unsichtbare Nutzende sind ansonsten nicht sichtbar.

Terminal-Fenster
curl --request DELETE \
--url https://example.com/jsonapi.php/v1/users/<ID> \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Diese Route löscht einen beliebigen Nutzenden.

DELETE /users/{id}

Es werden keine Query-Parameter unterstützt.

Diese Route ist nur aktiviert, wenn die Stud.IP-Konfiguration JSONAPI_DANGEROUS_ROUTES_ALLOWED gesetzt ist.

Ist das der Fall, dürfen Nutzende der Rechtestufe root andere Nutzende löschen. Man kann sich selbst nicht löschen.

Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users/<ID>/institute-memberships \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Mit dieser Route erhält man die Mitgliedschaften in Einrichtungen von Nutzenden.

GET http://example.com/api/users/{id}/institute-memberships

Es werden keine Query-Parameter unterstützt.

Diese Route kann von jedem autorisierten Nutzer verwendet werden.

Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users/<ID>/status-group-memberships \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Mit dieser Route erhält man die Mitgliedschaften in Gruppen von Nutzenden.

GET http://example.com/api/users/{id}/status-group-memberships

ParameterBeschreibung
idID des Nutzers
ParameterDefaultBeschreibung
filter[range-id]-ID der Einrichtung oder Veranstaltung

Diese Route kann von jedem autorisierten Nutzer verwendet werden, sofern der anzuzeigende Nutzer sichtbar ist.

Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users/<ID>/status-groups \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Mit dieser Route erhält man die Gruppenzuordnungen von Nutzenden.

GET http://example.com/api/users/{id}/status-groups

ParameterBeschreibung
idID des Nutzers
ParameterDefaultBeschreibung
filter[range-id]-ID der Einrichtung oder Veranstaltung

Diese Route kann von jedem autorisierten Nutzer verwendet werden, sofern der anzuzeigende Nutzer sichtbar ist.

Terminal-Fenster
curl --request GET \
--url https://example.com/jsonapi.php/v1/users/<ID>/profile-categories \
--header "Authorization: Basic `echo -ne "test_dozent:testing" | base64`"

Mit dieser Route erhält man die vom Nutzer angelegten Kategorien im Profil.

GET http://example.com/api/users/{id}/profile-categories

ParameterBeschreibung
idID des Nutzers

Es werden keine Query-Parameter unterstützt.

Diese Route kann von jedem autorisierten Nutzer verwendet werden, sofern der anzuzeigende Nutzer sichtbar ist.