Ein alternativer, "RESTful" Ansatz für Webservices basierend auf OAuth
Bei jedem Request sendet die API den HTTP-Header X-Server-Timestamp ihren aktuellen Unix-Zeitstempel mit.
Zu beachten ist, dass bei sämtlichen Nutzerrückgabe auch der Nutzer mit der Id
____%system%____
vorkommen kann. Dies sind system-interne Vorgänge
bzw. Benachrichtigungen und sollten als diese gekennzeichnet werden.
Der Nutzer kann sich wahlweise mittels OAuth, der Standard-Stud.IP-Session oder der HTTP-Basic Authentication bei der API autorisieren.
Die OAuth-Autorisierung ist in dem Kapitel OAuth beschrieben, während für die Stud.IP-Session-Autorisierung lediglich ein Cookie namens Seminar_Session und der gültigen Session-Id des entsprechenden Nutzers für den Request gesetzt werden muss. Somit wird die API bspw. auch für AJAX-Aufrufe interessant.
Die API unterscheidet zwei verschiedene Modi, die den Aufbau der Rückgabe steuern.
Routen nutzen sich untereinander, um Informationen abzurufen. Ist der Zugriff auf ein davon untersagt, schlägt die gesamte Anfrage fehl.
Die Rückgabe kann entweder als JSON, als serialisiertes PHP
oder als XML erfolgen und ist immer als UTF-8 kodiert.
Das jeweilige Format wird entweder über den Content-Type
-HTTP-Header der Anfrage
oder durch die Dateiendung der angeforderten Ressource bestimmt. Ein Zugriff auf /api/news.json
liefert die Ankündigungen eines Nutzers im JSON-Format zurück, während /api/news.xml
die Ankündigungen im XML-Format zurückgeben würde.
Die Beispiele in dieser Dokumentation decken vorläufig nur die zurückgegebenen JSON-Daten ab, da dies das bevorzugte Format ist.
Methoden, die keine Rückgabe erfordern, antworten im Erfolgsfall in aller Regel
mit einem HTTP-Status-Code von 200 - Success
. Bei Fehlern ist
zusätzlich zu einem Status von 4xx
auch der Body der Antwort zu beachten.
Dort findet sich eine genauere Beschreibung des Fehlers.
Die Autorisierung erfolgt mittels sogenanntem 3-legged OAuth. Im Gegensatz zum 2-legged OAuth, bei dem sich nur die Applikation beim Server autorisiert, ist beim 3-legged OAuth zusätzlich eine Autorisierung des zugreifenden Nutzers erforderlich.
Die Autorisierung des Nutzers erfolgt dabei vollkommen transparent, da die Autorisierung auf Seiten des autorisierenden Servers erfolgt. Die zur Autorisierung erforderlichen Nutzerdaten verlassen somit niemals das System.
Der komplette Workflow von OAuth findest sich unter http://oauth.net/core/diagram.png.
Weitere Details zu OAuth finden sie auf http://oauth.net.
Die 3 Endpunkte der Autorisierung sind die folgenden:
Für die Autorisierung werden weiterhin die beiden Schlüssel
consumer_key
und consumer_secret
benötigt, welche vom Betreiber der jeweiligen Stud.IP-Instanz
vergeben werden.
Liefert Informationen über die in der Instanz unterstützten Routen, ihrer Methoden und den jeweiligen Zugriffsberechtigungen zurück.
{
"routes": {
"/activities(/:range_id)": {
"get": true
},
"/courses": {
"get": false
},
"/courses/:course_id": {
"get": false
},
"/courses/semester": {
"get": false
},
"/courses/semester/:semester_id": {
"get": false
},
"/discovery": {
"get": true
},
"/documents/:document_id": {
"get": true
},
"/documents/:document_id/download": {
"get": true
},
"/documents/:range_id/folder(/:folder_id)": {
"get": true
},
"/messages": {
"post": false
},
"/messages/:box": {
"get": true,
"post": false
},
"/messages/:box/:folder": {
"get": true
},
"/messages/:message_id": {
"get": true,
"delete": true
},
"/messages/:message_id/move/:folder": {
"post": true
},
"/messages/:message_id/read": {
"post": true
},
"/news(/range/:range_id)": {
"get": true,
"post": true
},
"/news/:news_id": {
"get": true,
"post": false,
"delete": true
},
"/semesters": {
"get": true
},
"/semesters/:semester_id": {
"get": true
},
"/studip/settings": {
"get": true
},
"/user(/:user_id)": {
"get": true
}
}
}
In dem obigen Beispiel sind alle Routen erlaubt bis auf /api/courses
,
also der Zugriff auf die Veranstaltungen.
Liefert die Veranstaltungen zurück, in die der Nutzer eingetragen ist.
{
"courses":[
{
"course_id": "25fc42f45366af2b6ab76c6763d6d4b6",
"start_time": "1322694000",
"duration_time": "0",
"title": "Stud.IP Basics",
"subtitle": "",
"description": "An introduction to Stud.IP",
"location": "A1 2-345",
"type": "1",
"semester_id": "b0f900555733fe1cdcd60f1568be32b3",
"teachers": [
"ae7a77dff6aa85f82c40cc311600ceb4"
],
"tutors": [
"757af09136a9f8a00280e598ac9814bc",
"96f1172ccc378b7710260413d3db8c8f"
],
"students": [
"e7eaafc2245b04c608d2ce17b8267875",
"205f3efb7997a0fc9755da2b535038da",
"7e81ec247c151c02ffd479511e24cc03"
],
"modules": {
"calendar": false,
"chat": true,
"documents": true,
"documents_folder_permissions": false,
"elearning_interface": false,
"forum": true,
"literature": false,
"participants": true,
"personal": false,
"schedule": false,
"scm": true,
"wiki": true
}
},
{
"course_id": "6909da6f6a8f864ad50458b256722388",
"start_time": "1335250673",
"duration_time": "0",
"title": "Studiengruppen-Dummy",
"subtitle": "",
"description": "Hier aussagekr\u00e4ftige Beschreibung eingegeben.",
"location": "",
"type": "99",
"semester_id": "55e872dbcb8a1c79bfb088dfb2da0556",
"modules": {
"chat": false,
"calendar": false,
"documents": false,
"documents_folder_permissions": false,
"elearning_interface": false,
"forum": false,
"literature": false,
"participants": true,
"personal": false,
"schedule": false,
"scm": false,
"wiki": true
},
"teachers": [],
"tutors": [],
"students": []
}
]
}
Liefert die Daten der angegebenen Veranstaltung zurück.
{
"course": {
"course_id": "25fc42f45366af2b6ab76c6763d6d4b6",
"start_time": "1322694000",
"duration_time": "0",
"title": "Stud.IP Basics",
"subtitle": "",
"description": "An introduction to Stud.IP",
"location": "A1 2-345",
"type": "1",
"semester_id": "b0f900555733fe1cdcd60f1568be32b3",
"teachers": [
"ae7a77dff6aa85f82c40cc311600ceb4"
],
"tutors": [
"757af09136a9f8a00280e598ac9814bc",
"96f1172ccc378b7710260413d3db8c8f"
],
"students": [
"e7eaafc2245b04c608d2ce17b8267875",
"205f3efb7997a0fc9755da2b535038da",
"7e81ec247c151c02ffd479511e24cc03"
],
"modules": {
"calendar": false,
"chat": true,
"documents": true,
"documents_folder_permissions": false,
"elearning_interface": false,
"forum": true,
"literature": false,
"participants": true,
"personal": false,
"schedule": false,
"scm": true,
"wiki": true
}
}
}
Liefert die eingetragenen Nutzer einer Veranstaltung zurück.
{
"members": {
"students": [
"e7eaafc2245b04c608d2ce17b8267875",
"205f3efb7997a0fc9755da2b535038da",
"7e81ec247c151c02ffd479511e24cc03"
],
"tutors": [],
"teachers": ["ae7a77dff6aa85f82c40cc311600ceb4"]
}
}
Liefert die eingetragenen Nutzer mit dem angegebenen Status einer Veranstaltung zurück.
{
"members": [
"e7eaafc2245b04c608d2ce17b8267875",
"205f3efb7997a0fc9755da2b535038da",
"7e81ec247c151c02ffd479511e24cc03"
]
}
Liefert alle Schlüsselwörter der Wikiseiten einer Veranstaltung zurück.
{
"keywords":[
"Listen",
"Übersichten",
"WikiWikiWeb"
]
}
Liefert eine bestimmte Wikiseite einer Veranstaltung (in einer bestimmten Version) zurück.
{
"page":{
"range_id":"25fc42f45366af2b6ab76c6763d6d4b6",
"user_id":"76ed43ef286fb55cf9e41beadb484a9f",
"keyword":"WikiWikiWeb",
"body":"<a class=\"link-extern\" href=\"http:\/\/google.de\" target=\"_blank\">foo<\/a><br><a href=\"\/wiki.php?keyword=andere+seite&view=editnew\">andere seite(?)<\/a>",
"chdate":"1329120139",
"version":"5",
"body_original":"[foo]http:\/\/google.de\r\n[[andere seite]]"
}
}
Liefert alle Semester zurück, in denen der Nutzer in mindestens eine Veranstaltung eingetragen ist.
{
"semesters":[
{
"semester_id": "b0f900555733fe1cdcd60f1568be32b3",
"title": "WS 2011\/2012",
"description": "",
"begin": "1322694000",
"end": "1333231199",
"seminars_begin": "1322694000",
"seminars_end": "1330556399"
},
{
"semester_id": "55e872dbcb8a1c79bfb088dfb2da0556",
"title": "SS 2012",
"description": "",
"begin": "1333231200",
"end": "1349042399",
"seminars_begin": "1334440800",
"seminars_end": "1345154399"
}
]
}
Liefert die Veranstaltungen zurück, in die der Nutzer in dem angegebenen Semester eingetragen ist.
{
"courses":[
{
"course_id": "25fc42f45366af2b6ab76c6763d6d4b6",
"start_time": "1322694000",
"duration_time": "0",
"title": "Stud.IP Basics",
"subtitle": "",
"description": "An introduction to Stud.IP",
"location": "A1 2-345",
"type": "1",
"semester_id": "b0f900555733fe1cdcd60f1568be32b3",
"teachers": [
"ae7a77dff6aa85f82c40cc311600ceb4"
],
"tutors": [
"757af09136a9f8a00280e598ac9814bc",
"96f1172ccc378b7710260413d3db8c8f"
],
"students": [
"e7eaafc2245b04c608d2ce17b8267875",
"205f3efb7997a0fc9755da2b535038da",
"7e81ec247c151c02ffd479511e24cc03"
],
"modules": {
"calendar": false,
"chat": true,
"documents": true,
"documents_folder_permissions": false,
"elearning_interface": false,
"forum": true,
"literature": false,
"participants": true,
"personal": false,
"schedule": false,
"scm": true,
"wiki": true
}
},
{
"course_id": "6909da6f6a8f864ad50458b256722388",
"start_time": "1335250673",
"duration_time": "0",
"title": "Studiengruppen-Dummy",
"subtitle": "",
"description": "Hier aussagekr\u00e4ftige Beschreibung eingegeben.",
"location": "",
"type": "99",
"semester_id": "55e872dbcb8a1c79bfb088dfb2da0556",
"modules": {
"chat": false,
"calendar": false,
"documents": false,
"documents_folder_permissions": false,
"elearning_interface": false,
"forum": false,
"literature": false,
"participants": true,
"personal": false,
"schedule": false,
"scm": false,
"wiki": true
},
"teachers": [],
"tutors": [],
"students": []
}
]
}
Liefert alle im Wiki vorhandenen Seiten zurück.
{
"keywords":[
"Bar",
"Foo",
"LoremIpsum",
"WikiWikiWeb"
]
}
Liefert die Daten einer einzelnen Seite (in einer bestimmten Version) zurück.
{
"page":{
"user_id":"c2fd13b5fc964d2a75afcf269c1bac17",
"keyword":"LoremIpsum",
"body":"Test<br><br>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
"chdate":"1355605353",
"version":"2",
"body_original":"Test\r\n\r\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
"course_id":"834499e2b8a2cd71637890e5de31cba3"
}
}
Liefert die Daten eines Dokuments zurück.
{
"document": {
"document_id": "9232571de085fd5b41f2b12768abd115",
"user_id": "e7eaafc2245b04c608d2ce17b8267875",
"name": "iPad calendar screenshot: List view",
"description": "Foo bar",
"mkdate": "1336841128",
"chdate": "1336841128",
"filename": "calendar-list.png",
"filesize": "209695",
"downloads": "1",
"mime_type": "image/png",
"icon": "http://studip.example.org/assets/images/icons/16/blue/file-image.png",
"protected": false
}
}
Liefert das Dokument als solches zurück.
Liefert die Dateien und Ordner eines angegebenen Ordners einer Veranstaltung zurück.
{
"folders": [
{
"folder_id": "d36c905c26265fda018e29b02224b635",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"name": "Allgemeiner Dateiordner",
"description": "Ablage f\u00fcr allgemeine Ordner und Dokumente der Veranstaltung",
"mkdate": "1326410202",
"chdate": "1326410202",
"permissions": {
"visible": true,
"writeable": true,
"readable": true,
"extendable": false
}
},
{
"folder_id": "842bf5a9fd34a5f7037b1a0c33def067",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"name": "28.11.11, 10:00 - 12:00, Ohne Titel (Thema gel\u00f6scht)",
"description": "Dateiordner bezieht sich auf ein nicht mehr vorhandenes Thema.",
"mkdate": "1334137141",
"chdate": "1334137141",
"permissions": {
"visible": true,
"writeable": true,
"readable": true,
"extendable": true
}
},
{
"folder_id": "3b5111cc46c90f103be55373bf246d41",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"name": "Dateiordner der Gruppe: AutorInnen",
"description": "Ablage f\u00fcr Ordner und Dokumente dieser Gruppe",
"mkdate": "1335182781",
"chdate": "1335182781",
"permissions": {
"visible": true,
"writeable": true,
"readable": true,
"extendable": false
}
}
],
"documents": [
{
"document_id": "866c886cbbfa4c3e90d5f5ac6e8aa5c0",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"name": "Sprechstundenplugin",
"description": "Plugin f\u00fcr Sprechstundentermine",
"mkdate": "1329120010",
"chdate": "1329120010",
"filename": "sprechstundenplugin_1.6.3.zip",
"filesize": "23031",
"downloads": "0",
"mime_type": "application/zip",
"icon": "http://studip.example.org/assets/images/icons/16/blue/file-archive.png",
"protected": false
},
{
"document_id": "9232571de085fd5b41f2b12768abd115",
"user_id": "e7eaafc2245b04c608d2ce17b8267875",
"name": "iPad calendar screenshot: List view",
"description": "Foo bar",
"mkdate": "1336841128",
"chdate": "1336841128",
"filename": "calendar-list.png",
"filesize": "209695",
"downloads": "1",
"mime_type": "image/png",
"icon": "http://studip.example.org/assets/images/icons/16/blue/file-image.png",
"protected": true
}
]
}
Es werden grundsätzlich nur Ordner zurückgegeben, bei denen mindestens eine Berechtigung gesetzt ist, da ein Ordner sonst eh nicht nutzbar ist.
Liefert die Anzahl gelesener bzw. ungelesener Nachrichten im Posteingang zurück.
{
"read":16,
"unread":3
}
Schreibt eine neue Nachricht.
Parameter:
HTTP-Status der Rückgabe:
201
falls die Nachricht erzeugt wurde - in diesem Fall wird auch das
erzeugte Nachrichtenobjekt mitgeliefert
404
falls einer der angegebenen Empfänger nicht im System vorhanden ist406
bei fehlenden oder ungültigen Parametern500
falls die Nachricht nicht erzeugt werden konnteLiefert die vorhandenen Nachrichtenordner des autorisierten Nutzers zurück. Der Parameter bestimmt je nach Wert, auf welchen Bereich zugegriffen werden soll:
{
"folders":[
"Posteingang",
"Archiv"
]
}
Liefert die Daten der angegebenen Nachricht zurück.
{
"message": {
"message_id": "4fb019436f6270a8a72a7e1aff03ef0d",
"sender_id": "ae7a77dff6aa85f82c40cc311600ceb4",
"receiver_id": "ae7a77dff6aa85f82c40cc311600ceb4",
"subject": "Sie wurden in eine Studiengruppe eingeladen",
"message": "John Doe möchte Sie auf die Studiengruppe Studiengruppen-Dummy aufmerksam machen. Klicken Sie auf den untenstehenden Link, um direkt zur Studiengruppe zu gelangen.<br><br> <a class=\"link-intern\" href=\"http://studip.example.org/dispatch.php/course/studygroup/details/6909da6f6a8f864ad50458b256722388\">http://studip.example.org/dispatch.php/course/studygroup/details/6909da6f6a8f864ad50458b256722388</a>",
"mkdate": "1335250648",
"priority": "normal",
"unread": "0"
}
}
Löscht die übergebene Nachricht.
HTTP-Status der Rückgabe:
204
bei Erfolg403
wenn die Nachricht nicht gelöscht werden darf404
wenn die Nachricht nicht gefunden wurdeMarkiert die angegebene Nachricht als gelesen.
HTTP-Status der Rückgabe:
204
bei Erfolg404
wenn die Nachricht nicht gefunden wurdeMarkiert alle Nachrichten als gelesen.
HTTP-Status der Rückgabe:
200
bei Erfolg500
bei einem FehlerLiefert die vorhandenen Nachrichten eines Ordners des autorisierten Nutzers zurück.
{
"messages": [
{
"message_id": "4fb019436f6270a8a72a7e1aff03ef0d",
"sender_id": "ae7a77dff6aa85f82c40cc311600ceb4",
"receiver_id": "ae7a77dff6aa85f82c40cc311600ceb4",
"subject": "Sie wurden in eine Studiengruppe eingeladen",
"message": "John Doe möchte Sie auf die Studiengruppe Studiengruppen-Dummy aufmerksam machen. Klicken Sie auf den untenstehenden Link, um direkt zur Studiengruppe zu gelangen.<br><br> <a class=\"link-intern\" href=\"http://studip.example.org/dispatch.php/course/studygroup/details/6909da6f6a8f864ad50458b256722388\">http://studip.example.org/dispatch.php/course/studygroup/details/6909da6f6a8f864ad50458b256722388</a>",
"mkdate": "1335250648",
"priority": "normal",
"unread": "0"
},
{
"message_id": "7f0a55cab501e936342c4a32ae0d201e",
"sender_id": "____%system%____",
"receiver_id": "____%system%____",
"subject": "Systemnachricht: Vote/Test ge\u00e4ndert",
"message": "An Ihrem Test "A" wurden von dem Administrator oder der Administratorin John Doe Änderungen vorgenommen.<br> <br> -- <br>Diese Nachricht wurde automatisch vom Stud.IP-System generiert. Sie können darauf nicht antworten.",
"mkdate": "1334072556",
"priority": "normal",
"unread": "0"
},
{
"message_id": "04cb135a12453333d264f7dcddfffa22",
"sender_id": "____%system%____",
"receiver_id": "____%system%____",
"subject": "Systemnachricht: Abonnement aufgehoben",
"message": "Ihr Abonnement der Veranstaltung <b>Test-Veranstaltung</b> wurde aufgehoben, da die Veranstaltung mit einem teilnahmebeschränkten Anmeldeverfahren versehen wurde. <br>Wenn Sie einen Platz in der Veranstaltung bekommen wollen, melden Sie sich bitte erneut an.<br> <br> -- <br>Diese Nachricht wurde automatisch vom Stud.IP-System generiert. Sie können darauf nicht antworten.",
"mkdate": "1332755326",
"priority": "normal",
"unread": "0"
},
{
"message_id": "a4202f26cab3c381b9f138b47192de00",
"sender_id": "____%system%____",
"receiver_id": "____%system%____",
"subject": "Systemnachricht: Profil ver\u00e4ndert",
"message": "Ihre persönliche Seite wurde von einer Administratorin oder einem Administrator verändert.<br> Folgende Veränderungen wurden vorgenommen:<br> <br>Private Daten wurden geändert.<br>Daten im Lebenslauf u.a. wurden geändert.<br>Diese Nachricht wurde automatisch vom Stud.IP-System generiert. Sie können darauf nicht antworten.",
"mkdate": "1332256958",
"priority": "normal",
"unread": "1"
},
{
"message_id": "661f318cced743df38964fccace74336",
"sender_id": "76ed43ef286fb55cf9e41beadb484a9f",
"receiver_id": "76ed43ef286fb55cf9e41beadb484a9f",
"subject": "test",
"message": "<img src=\"http://studip.example.org/pictures/smile/wink3.gif\" alt=\"wink3\" title=\"wink3\" width=\"\" height=\"\"> <img src=\"http://studip.example.org/pictures/smile/wink3.gif\" alt=\"wink3\" title=\"wink3\" width=\"\" height=\"\"> <img src=\"http://studip.example.org/pictures/smile/wink3.gif\" alt=\"wink3\" title=\"wink3\" width=\"\" height=\"\">",
"mkdate": "1327112995",
"priority": "normal",
"unread": "1"
},
{
"message_id": "cb0f986b69792c2cfd40ff2529c3155a",
"sender_id": "76ed43ef286fb55cf9e41beadb484a9f",
"receiver_id": "76ed43ef286fb55cf9e41beadb484a9f",
"subject": "Test",
"message": "<img src=\"http://studip.example.org/pictures/smile/smile.gif\" alt=\"smile\" title=\"smile\" width=\"\" height=\"\">",
"mkdate": "1326539373",
"priority": "normal",
"unread": "0"
}
]
}
Verschiebt die angegebene Nachricht in den angegebenen Ordner.
HTTP-Status der Rückgabe:
204
bei Erfolg404
wenn die Nachricht oder der Ordner nicht gefunden wurdeLiefert die Ankündigungen des autorisierten Nutzers zurück.
{
"news": [
{
"news_id": "7516d73adb81ca271c88986bafd14fd7",
"topic": "Message from outer space spells \"foo\" - scientists left puzzled",
"body": "Lorem ipsum dolor...",
"date": "1336773600",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"expire": "691199",
"allow_comments": "1",
"chdate": "1336835422",
"chdate_uid": "",
"mkdate": "1336835409",
"body_original": "Lorem ipsum dolor..."
}
]
}
Erzeugt eine Ankündigung für den autorisierten Nutzer.
Parameter:
HTTP-Status der Rückgabe:
201
falls die Ankündigung erzeugt wurde - in diesem Fall wird auch das
erzeugte Ankündigungsobjekt mitgeliefert
403
falls der Nutzer nicht zum Zugriff auf die angegebene Range berechtigt ist406
bei fehlenden oder ungültigen Parametern500
falls die Ankündigung nicht erzeugt werden konnteLiefert die Daten der angegebenen Ankündigung zurück.
{
"news":{
"news_id": "7516d73adb81ca271c88986bafd14fd7",
"topic": "Message from outer space spells \"foo\" - scientists left puzzled",
"body": "Lorem ipsum dolor...",
"date": "1336773600",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"expire": "691199",
"allow_comments": "1",
"chdate": "1336835422",
"chdate_uid": "",
"mkdate": "1336835409",
"body_original": "Lorem ipsum dolor..."
}
}
Verändert die Daten einer Ankündigung.
Parameter:
HTTP-Status der Rückgabe:
200
falls die Ankündigung verändert wurde - in diesem Fall wird auch das
veränderte Ankündigungsobjekt mitgeliefert
404
falls die Ankündigung nicht existiert406
bei fehlenden oder ungültigen Parametern501
falls die Ankündigung nicht verändert wurdeLöscht die angegebene Ankündigung.
HTTP-Status der Rückgabe:
200
bei Erfolg404
wenn die Ankündigung nicht gefunden wurde
Liefert die Ankündigungen der angegebenen Range zurück. Eine Range
kann hierbei die Id eines Nutzers, einer Veranstaltung/Studiengruppe, eines Instituts
oder studip
für globale Ankündigungen sein.
{
"news":{
"news_id": "7516d73adb81ca271c88986bafd14fd7",
"topic": "Message from outer space spells \"foo\" - scientists left puzzled",
"body": "Lorem ipsum dolor...",
"date": "1336773600",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"expire": "691199",
"allow_comments": "1",
"chdate": "1336835422",
"chdate_uid": "",
"mkdate": "1336835409",
"body_original": "Lorem ipsum dolor..."
}
}
Erzeugt eine Ankündigung für die angegebene Range.
Parameter:
HTTP-Status der Rückgabe:
201
falls die Ankündigung erzeugt wurde - in diesem Fall wird auch das
erzeugte Ankündigungsobjekt mitgeliefert
403
falls der Nutzer nicht zum Zugriff auf die angegebene Range berechtigt ist406
bei fehlenden oder ungültigen Parametern500
falls die Ankündigung nicht erzeugt werden konnteLiest alle Kommentare zu einer Ankündigung aus.
HTTP-Status der Rückgabe:
200
wenn alles in Ordnung ist404
falls die angegebene Ankündigung nicht existiert406
falls Kommentare für die angegebene Ankündigung deaktiviert sind{
"comments": [
{
"comment_id": "c81aa61d22ea203dba9da5b8d69bef39",
"comment": "foorst!!!1!",
"mkdate": "1336835458",
"chdate": "1336835458",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"comment_original": "foorst!!!1!"
}
]
}
Fügt der Ankündigung einen neuen Kommentar hinzu.
Parameter:
HTTP-Status der Rückgabe:
201
falls der Kommentar erzeugt wurde - in diesem Fall wird auch das
erzeugte Kommentarobjekt mitgeliefert
404
falls die Ankündigung nicht existiert406
bei fehlenden oder ungültigen Parametern500
falls der Kommentar nicht erzeugt werden konnteLiefert die Daten des Kommentars zurück.
{
"comment": {
"comment_id": "c81aa61d22ea203dba9da5b8d69bef39",
"comment": "foorst!!!1!",
"mkdate": "1336835458",
"chdate": "1336835458",
"user_id": "76ed43ef286fb55cf9e41beadb484a9f",
"comment_original": "foorst!!!1!"
}
}
Löscht den angegebenen Kommentar.
HTTP-Status der Rückgabe:
200
falls der Kommentar gelöscht wurde404
falls die Ankündigung oder der Kommentar nicht existiert500
falls der Kommentar nicht gelöscht werden konnteLiefert alle bekannten Semester der Installation zurück.
{
"semesters": [
{
"semester_id": "eb828ebb81bb946fac4108521a3b4697",
"title": "WS 2010\/11",
"description": "",
"begin": "1285884000",
"end": "1301608799",
"seminars_begin": "1287439200",
"seminars_end": "1296946799"
},
{
"semester_id": "f2b4fdf5ac59a9cb57dd73c4d3bbb651",
"title": "SS 2011",
"description": "",
"begin": "1301608800",
"end": "1317419999",
"seminars_begin": "1302040800",
"seminars_end": "1310248799"
},
{
"semester_id": "b0f900555733fe1cdcd60f1568be32b3",
"title": "WS 2011\/2012",
"description": "",
"begin": "1322694000",
"end": "1333231199",
"seminars_begin": "1322694000",
"seminars_end": "1330556399"
},
{
"semester_id": "55e872dbcb8a1c79bfb088dfb2da0556",
"title": "SS 2012",
"description": "",
"begin": "1333231200",
"end": "1349042399",
"seminars_begin": "1334440800",
"seminars_end": "1345154399"
}
]
}
Liefert die Daten des angegebenen Semesters zurück.
{
"semester": {
"semester_id": "55e872dbcb8a1c79bfb088dfb2da0556",
"title": "SS 2012",
"description": "",
"begin": "1333231200",
"end": "1349042399",
"seminars_begin": "1334440800",
"seminars_end": "1345154399"
}
}
Liefert lokale Einstellungswerte Stud.IP-interner Konfigurationen
zurück.
Diese Werte dienen dazu, die Daten verschiedener Ressourcen an
den Standort angepasst interpretieren zu können.
{
"ALLOW_CHANGE_USERNAME":true,
"ALLOW_CHANGE_EMAIL":true,
"ALLOW_CHANGE_NAME":true,
"ALLOW_CHANGE_TITLE":true,
"INST_TYPE":{
"1": {"name":"Einrichtung"},
"2": {"name":"Zentrum"},
"3": {"name":"Lehrstuhl"},
"4": {"name":"Abteilung"},
"5": {"name":"Fachbereich"},
"6": {"name":"Seminar"},
"7": {"name":"Fakult\u00e4t"},
"8": {"name":"Arbeitsgruppe"}
},
"SEM_TYPE":{
"1":{
"name":"Vorlesung",
"class":"1"
},
"2":{
"name":"Grundstudium",
"class":"1"
},
"3":{
"name":"Hauptstudium",
"class":"1"
},
"4":{
"name":"Seminar",
"class":"1"
},
"5":{
"name":"Praxisveranstaltung",
"class":"1"
},
"6":{
"name":"Kolloquium",
"class":"1"
},
"7":{
"name":"Forschungsgruppe",
"class":"1"
},
"8":{
"name":"Arbeitsgruppe",
"class":"5"
},
"9":{
"name":"sonstige",
"class":"1"
},
"10":{
"name":"Forschungsgruppe",
"class":"2"
},
"11":{
"name":"sonstige",
"class":"2"
},
"12":{
"name":"Gremiumsveranstaltung",
"class":"3"
},
"13":{
"name":"sonstige",
"class":"3"
},
"14":{
"name":"Community-Forum",
"class":"4"
},
"15":{
"name":"sonstige",
"class":"4"
},
"16":{
"name":"Praktikum",
"class":"1"
},
"17":{
"name":"Lehrveranstaltung nach PVO-Lehr I",
"class":"1"
},
"18":{
"name":"Anleitung zu selbst\u00e4ndigen wissenschaftlichen Arbeiten",
"class":"1"
},
"19":{
"name":"Sprachkurs",
"class":"1"
},
"20":{
"name":"Fachdidaktik",
"class":"1"
},
"21":{
"name":"\u00dcbung",
"class":"1"
},
"22":{
"name":"Proseminar",
"class":"1"
},
"23":{
"name":"Oberseminar",
"class":"1"
},
"24":{
"name":"Arbeitsgemeinschaft",
"class":"1"
},
"25":{
"name":"Vorlesung",
"class":"6"
},
"26":{
"name":"Grundstudium",
"class":"6"
},
"27":{
"name":"Hauptstudium",
"class":"6"
},
"28":{
"name":"Seminar",
"class":"6"
},
"29":{
"name":"Praxisveranstaltung",
"class":"6"
},
"30":{
"name":"Kolloquium",
"class":"6"
},
"31":{
"name":"Forschungsgruppe",
"class":"6"
},
"99":{
"name":"Studiengruppe",
"class":"99"
}
},
"SEM_CLASS":{
"1":{
"id":"1",
"name":"Lehre",
"compact_mode":"0",
"workgroup_mode":"0",
"only_inst_user":"1",
"turnus_default":"0",
"default_read_level":"1",
"default_write_level":"1",
"bereiche":"1",
"show_browse":"1",
"write_access_nobody":"0",
"topic_create_autor":"1",
"visible":"1",
"course_creation_forbidden":"0",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreAdmin",
"documents":"CoreDocuments",
"schedule":"CoreSchedule",
"participants":"CoreParticipants",
"literature":"CoreLiterature",
"chat":"1",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreAdmin":{
"activated":1,
"sticky":1
}
},
"description":"Hier finden Sie alle in Stud.IP registrierten Lehrveranstaltungen",
"create_description":"",
"studygroup_mode":"0",
"title_dozent":null,
"title_dozent_plural":null,
"title_tutor":null,
"title_tutor_plural":null,
"title_autor":null,
"title_autor_plural":null,
"mkdate":"1340177014",
"chdate":"1340177014"
},
"2":{
"id":"2",
"name":"Forschung",
"compact_mode":"1",
"workgroup_mode":"1",
"only_inst_user":"1",
"turnus_default":"-1",
"default_read_level":"2",
"default_write_level":"2",
"bereiche":"1",
"show_browse":"1",
"write_access_nobody":"0",
"topic_create_autor":"1",
"visible":"1",
"course_creation_forbidden":"0",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreAdmin",
"documents":"CoreDocuments",
"schedule":"CoreSchedule",
"participants":"CoreParticipants",
"literature":"CoreLiterature",
"chat":"1",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreAdmin":{
"activated":1,
"sticky":1
}
},
"description":"Hier finden Sie virtuelle Veranstaltungen zum Thema Forschung an der Universität",
"create_description":"",
"studygroup_mode":"0",
"title_dozent":"Papst",
"title_dozent_plural":"P\u00e4pste",
"title_tutor":"Kardinal",
"title_tutor_plural":"Kardin\u00e4le",
"title_autor":"Scherge",
"title_autor_plural":"Schergen",
"mkdate":"1340177014",
"chdate":"1340177014"
},
"3":{
"id":"3",
"name":"Organisation",
"compact_mode":"1",
"workgroup_mode":"1",
"only_inst_user":"0",
"turnus_default":"-1",
"default_read_level":"2",
"default_write_level":"2",
"bereiche":"1",
"show_browse":"1",
"write_access_nobody":"1",
"topic_create_autor":"1",
"visible":"1",
"course_creation_forbidden":"0",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreAdmin",
"documents":"CoreDocuments",
"schedule":"CoreSchedule",
"participants":"CoreParticipants",
"literature":"CoreLiterature",
"chat":"1",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreAdmin":{
"activated":1,
"sticky":1
}
},
"description":"Hier finden Sie virtuelle Veranstaltungen zu verschiedenen Gremien an der Universität",
"create_description":"",
"studygroup_mode":"0",
"title_dozent":null,
"title_dozent_plural":null,
"title_tutor":null,
"title_tutor_plural":null,
"title_autor":null,
"title_autor_plural":null,
"mkdate":"1340177014",
"chdate":"1340177014"
},
"4":{
"id":"4",
"name":"Community",
"compact_mode":"1",
"workgroup_mode":"0",
"only_inst_user":"0",
"turnus_default":"-1",
"default_read_level":"0",
"default_write_level":"0",
"bereiche":"1",
"show_browse":"0",
"write_access_nobody":"1",
"topic_create_autor":"0",
"visible":"1",
"course_creation_forbidden":"0",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreAdmin",
"documents":"CoreDocuments",
"schedule":"CoreSchedule",
"participants":"CoreParticipants",
"literature":"CoreLiterature",
"chat":"1",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreAdmin":{
"activated":1,
"sticky":1
}
},
"description":"Hier finden Sie virtuelle Veranstaltungen zu unterschiedlichen Themen",
"create_description":"",
"studygroup_mode":"0",
"title_dozent":null,
"title_dozent_plural":null,
"title_tutor":null,
"title_tutor_plural":null,
"title_autor":null,
"title_autor_plural":null,
"mkdate":"1340177014",
"chdate":"1340177014"
},
"5":{
"id":"5",
"name":"Arbeitsgruppen",
"compact_mode":"0",
"workgroup_mode":"0",
"only_inst_user":"1",
"turnus_default":"1",
"default_read_level":"1",
"default_write_level":"1",
"bereiche":"1",
"show_browse":"0",
"write_access_nobody":"0",
"topic_create_autor":"1",
"visible":"1",
"course_creation_forbidden":"0",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreAdmin",
"documents":"CoreDocuments",
"schedule":"CoreSchedule",
"participants":"CoreParticipants",
"literature":"CoreLiterature",
"chat":"1",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreAdmin":{
"activated":1,
"sticky":1
}
},
"description":"Hier finden Sie verschiedene Arbeitsgruppen an der Stud.IP 2.4 <trunk>",
"create_description":"",
"studygroup_mode":"0",
"title_dozent":null,
"title_dozent_plural":null,
"title_tutor":null,
"title_tutor_plural":null,
"title_autor":null,
"title_autor_plural":null,
"mkdate":"1340177014",
"chdate":"1340177014"
},
"6":{
"id":"6",
"name":"importierte Kurse",
"compact_mode":"0",
"workgroup_mode":"0",
"only_inst_user":"1",
"turnus_default":"1",
"default_read_level":"1",
"default_write_level":"1",
"bereiche":"1",
"show_browse":"0",
"write_access_nobody":"0",
"topic_create_autor":"1",
"visible":"1",
"course_creation_forbidden":"1",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreAdmin",
"documents":"CoreDocuments",
"schedule":"CoreSchedule",
"participants":"CoreParticipants",
"literature":"CoreLiterature",
"chat":"1",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreAdmin":{
"activated":1,
"sticky":1
}
},
"description":"Hier finden Sie importierte Kurse",
"create_description":"",
"studygroup_mode":"0",
"title_dozent":null,
"title_dozent_plural":null,
"title_tutor":null,
"title_tutor_plural":null,
"title_autor":null,
"title_autor_plural":null,
"mkdate":"1340177014",
"chdate":"1340177014"
},
"99":{
"id":"99",
"name":"Studiengruppen",
"compact_mode":"0",
"workgroup_mode":"0",
"only_inst_user":"0",
"turnus_default":"0",
"default_read_level":"0",
"default_write_level":"0",
"bereiche":"0",
"show_browse":"0",
"write_access_nobody":"0",
"topic_create_autor":"1",
"visible":"0",
"course_creation_forbidden":"1",
"overview":"CoreOverview",
"forum":"CoreForum",
"admin":"CoreStudygroupAdmin",
"documents":null,
"schedule":null,
"participants":"CoreStudygroupParticipants",
"literature":"CoreLiterature",
"chat":"0",
"scm":"CoreScm",
"wiki":"CoreWiki",
"resources":null,
"calendar":null,
"elearning_interface":null,
"modules":{
"CoreOverview":{
"activated":1,
"sticky":1
},
"CoreStudygroupAdmin":{
"activated":1,
"sticky":1
},
"CoreStudygroupParticipants":{
"activated":1,
"sticky":1
}
},
"description":"",
"create_description":"",
"studygroup_mode":"1",
"title_dozent":"Gruppengr\u00fcnderIn",
"title_dozent_plural":"Gruppengr\u00fcnderInnen",
"title_tutor":"ModeratorIn",
"title_tutor_plural":"ModeratorInnen",
"title_autor":"Mitglied",
"title_autor_plural":"Mitglieder",
"mkdate":"1340177014",
"chdate":"1340177014"
}
},
"TERMIN_TYP":{
"1":{
"name":"Sitzung",
"sitzung":1,
"color":"#2D2C64"
},
"2":{
"name":"Vorbesprechung",
"sitzung":0,
"color":"#5C2D64"
},
"3":{
"name":"Klausur",
"sitzung":0,
"color":"#526416"
},
"4":{
"name":"Exkursion",
"sitzung":0,
"color":"#505064"
},
"5":{
"name":"anderer Termin",
"sitzung":0,
"color":"#41643F"
},
"6":{
"name":"Sondersitzung",
"sitzung":0,
"color":"#64372C"
},
"7":{
"name":"Vorlesung",
"sitzung":1,
"color":"#627C95"
}
},
"PERS_TERMIN_KAT":{
"1":{
"name":"Sonstiges",
"color":"#41643F"
},
"2":{
"name":"Sitzung",
"color":"#2D2C64"
},
"3":{
"name":"Vorbesprechung",
"color":"#5C2D64"
},
"4":{
"name":"Klausur",
"color":"#526416"
},
"5":{
"name":"Exkursion",
"color":"#505064"
},
"6":{
"name":"Sondersitzung",
"color":"#64372C"
},
"7":{
"name":"Pr\u00fcfung",
"color":"#64541E"
},
"8":{
"name":"Telefonat",
"color":"#48642B"
},
"9":{
"name":"Besprechung",
"color":"#957C29"
},
"10":{
"name":"Verabredung",
"color":"#956D42"
},
"11":{
"name":"Geburtstag",
"color":"#66954F"
},
"12":{
"name":"Familie",
"color":"#2C5964"
},
"13":{
"name":"Urlaub",
"color":"#951408"
},
"14":{
"name":"Reise",
"color":"#18645C"
},
"15":{
"name":"Vorlesung",
"color":"#627C95"
}
},
"TITLES":{
"dozent":[
"DozentIn",
"DozentInnen"
],
"deputy":[
"Vertretung",
"Vertretungen"
],
"tutor":[
"TutorIn",
"TutorInnen"
],
"autor":[
"AutorIn",
"AutorInnen"
],
"user":[
"LeserIn",
"LeserInnen"
],
"accepted":[
"Vorl\u00e4ufig akzeptierte TeilnehmerIn",
"Vorl\u00e4ufig akzeptierte TeilnehmerInnen"
]
},
"UNI_NAME_CLEAN":"Stud.IP 2.4 <trunk>"
}
Liefert grundlegende Farbeinstellungen zurück.
{
"colors":{
"background":"#e1e4e9",
"dark":"#34578c",
"light":"#899ab9"
}
}
Liefert die Daten des Nutzers mit der angegebenen Id zurück. Ist keine Id angegeben, so werden die Daten des autorisierten Nutzers zurückgegeben.
{
"user": {
"user_id": "e7eaafc2245b04c608d2ce17b8267875",
"username": "john@doe",
"perms": "autor",
"title_pre": "The One and Only",
"forename": "John",
"lastname": "Doe",
"title_post": ", the 1st",
"email": "john.doe@example.org",
"avatar_small": "http://studip.example.org/pictures/user/nobody_small.png",
"avatar_medium": "http://studip.example.org/pictures/user/nobody_medium.png",
"avatar_normal": "http://studip.example.org/pictures/user/nobody_normal.png",
"phone": "+1-555-1234",
"homepage": "",
"privadr": ""
}
}
Löscht einen Nutzer.
HTTP-Status der Rückgabe:
200
wenn der Nutzer gelöscht wurde404
falls der Nutzer nicht existiert500
falls der Nutzer nicht gelöscht werden konnteLiefert die Einrichtungen zurück, an denen ein Nutzer arbeitet bzw. studiert.
{
"institutes":{
"work":[
{
"institute_id":"2560f7c7674942a7dce8eeb238e15d93",
"name":"Test Einrichtung",
"perms":"dozent",
"consultation":"Mo 14-18",
"room":"A-123b",
"phone":"+49-123-456789",
"fax":"",
"street":"",
"city":"",
"faculty_name":"Test Fakultät",
"faculty_street":"Some Street 123a",
"faculty_city":"54321 Somewhere"
},
{
"institute_id":"f02e2b17bc0e99fc885da6ac4c2532dc",
"name":"Test Abteilung",
"perms":"dozent",
"consultation":"",
"room":"",
"phone":"",
"fax":"",
"street":"",
"city":"",
"faculty_name":"Test Fakultät",
"faculty_street":"Some Street 123a",
"faculty_city":"54321 Somewhere"
}
],
"study":[
]
}
}
Liefert die Kontakte des autorisierten Nutzers zurück.
{
"contacts":[
"81964eed5792f1b780f61dd347036136",
"ae7a77dff6aa85f82c40cc311600ceb4",
"205f3efb7997a0fc9755da2b535038da",
"e7eaafc2245b04c608d2ce17b8267875"
]
}
Fügt den angegebenen Nutzer als Kontakt hinzu.
HTTP-Status der Rückgabe:
200
falls der Nutzer als Kontakt hinzugefügt wurde - in diesem Fall
wird auch die veränderte Liste der Kontakte mitgeliefert
404
falls der als Kontakt hinzuzufügende Nutzer nicht existiert406
falls der Nutzer bereits als Kontakt gespeichert istLöscht einen Nutzer als Kontakt.
200
falls der Nutzer als Kontakt gelöscht wurde404
falls der als Kontakt zu löschende Nutzer nicht existiert406
falls der Nutzer nicht als Kontakt gespeichert istLiefert alle vorhandenen Kontaktgruppen zurück.
{
"groups":[
{
"group_id":"8188abaed1b8c8776e33a68867831258",
"name":"Test"
}
]
}
Erzeugt eine neue Kontaktgruppe.
Parameter:
HTTP-Status der Rückgabe:
200
falls die Kontaktgruppe erzeugt wurde - in diesem Fall wird die
veränderte Liste der Kontaktgruppen zurückgegeben
406
bei fehlenden oder ungültigen ParameternLiefert alle der Kontaktgruppe zugewiesenen Nutzer zurück.
{
"members":[
"e7eaafc2245b04c608d2ce17b8267875"
]
}
Löscht die angegebene Kontaktgruppe.
HTTP-Status der Rückgabe:
200
falls die Kontaktgruppe gelöscht wurde404
falls die Kontaktgruppe nicht existiertFügt den angegebenen Nutzer zur angegebenen Kontaktgruppe hinzu.
HTTP-Status der Rückgabe:
200
falls der Nutzer zu der Kontaktgruppe hinzugefügt wurde - in diesem Fall
wird die veränderte Liste der der Kontaktgruppen zugewiesenen Nutzer zurückgegeben
404
falls die Kontaktgruppe oder der Nutzer nicht existiertLöscht den angegebenen Nutzer aus der angegebenen Kontaktgruppe.
HTTP-Status der Rückgabe:
200
falls der Nutzer aus der Kontaktgruppe gelöscht wurde404
falls die Kontaktgruppe oder der Nutzer nicht existiertLiefert die Aktivitäten im Umfeld des autorisierten Nutzers zurück.
{
"activities": [
{
"id": "7516d73adb81ca271c88986bafd14fd7",
"title": "Ank\u00fcndigung: Message from outer space spells \"foo\" - scientists left puzzled",
"author": "John Doe",
"author_id": "76ed43ef286fb55cf9e41beadb484a9f",
"link": "http://studip.example.org/about.php?username=root%40studip&nopen=7516d73adb81ca271c88986bafd14fd7#anker",
"updated": "1336835422",
"summary": "John Doe hat die pers\u00f6nliche Ank\u00fcndigung \"Message from outer space spells \"foo\" - scientists left puzzled\" eingestellt.",
"content": "Lorem ipsum dolor...",
"category": "news"
}
]
}
Diese Route wurde versuchsweise in das ActivityFeed-Plugin von Elmar Ludwig eingebaut und ist noch experimentell.