diff --git a/admin/index.html b/admin/index.html
index c98b5a9528af06d04e1bbf7b2b9433ec7935f380..f19fe0c12871efc80e5e687086b5b9fc5bf26719 100644
--- a/admin/index.html
+++ b/admin/index.html
@@ -106,21 +106,11 @@
 					<img height="40" style="margin: 5px;" src="res/logo/wheel.svg" id="wheel-logo" class="smooth" alt="Loading Wheel">
 				</div>
 
-				<ul class="nav navbar-nav navbar-left cust-menu">
+				<ul class="nav navbar-nav navbar-left cust-menu pull-left">
 				</ul>
 
-				<ul class="nav navbar-nav navbar-right">
-					<li class="dropdown">
-						<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
-							<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
-							<span class="caret"></span>
-						</a>
-						<ul class="dropdown-menu">
-							<li><a href="#settings"><span class="glyphicon glyphicon-wrench" aria-hidden="true"></span> Settings</a></li>
-							<li role="separator" class="divider"></li>
-							<li><a href="#" class="logoutAction"><span class="glyphicon glyphicon-off" aria-hidden="true"></span> Logout</a></li>
-						</ul>
-					</li>
+				<ul class="nav navbar-nav navbar-right pull-right">
+					<li><a href="#" class="logoutAction"><span class="glyphicon glyphicon-off" aria-hidden="true"></span></a></li>
 				</ul>
 			</div>
 		</nav>
diff --git a/admin/lib/amiv/amivcore.js b/admin/lib/amiv/amivcore.js
index 7d1a209abb531051b8ef4593607266401993f2b7..6509256212a1823056dec1f2dab5a19b731b08e3 100644
--- a/admin/lib/amiv/amivcore.js
+++ b/admin/lib/amiv/amivcore.js
@@ -1,303 +1,311 @@
 (function(window) {
-  'use strict';
-  // Library NameSpace
-  var lns = 'amivcore'
+    'use strict';
+    // Library NameSpace
+    var lns = 'amivcore'
 
-  function libgen() {
-    // Lib to returned
-    var lib = {};
-		
-		// Core
-    var core = {
-	    // Important vars n' stuff
-	    lib: {
-	      api_url: 'https://amiv-apidev.vsos.ethz.ch',
-	      spec_url: 'lib/amiv/spec.json',
-	      authenticated: false,
-	      ready: false,
-	      req_time_out: 5000,
-	      on_interval: 100,
-	      show_errors: false,
-	    },
-	    // Header Setup
-	    header: {
-				req:{
-					'get': ['Content-Type','Authorization'],
-					'post': ['Content-Type','Authorization'],
-					'put': ['Content-Type','Authorization','If-Match'],
-					'patch': ['Content-Type','Authorization','If-Match'],
-					'delete': ['Content-Type','Authorization','If-Match'],
-				},
-				make: {
-					'Content-Type': function(){
-						return 'application/json'
-					},
-					'Authorization': function(){
-						if(get('cur_token') != null)
-							return 'Basic ' + btoa(get('cur_token') + ':');
-						return '';
-					},
-					'If-Match': function(){
-						return null;
-					}
-				}		    
-	    }
-	  }
-    
-    // Utility empty function for no callback
-    function dummy(){};
-		
-		//Save and get into localStorage
-    function set(cname, cvalue, exdays) {
-      window.localStorage.setItem('glob-'+cname, cvalue);
-    }
-    function get(cname) {
-      return window.localStorage.getItem('glob-'+cname);
-    }
+    function libgen() {
+        // Lib to returned
+        var lib = {};
 
-		// Make Request
-    function req(attr, callback) {
-      callback = callback || function(msg) {
-        console.log(msg);
-      };
-      $.ajax({
-        url: core.lib.api_url + attr.path,
-        data: attr.data,
-        method: attr.method,
-        dataType: 'json',
-        timeout: core.lib.req_time_out,
-        headers: attr.headers,
-        error: function(res) {
-          if (core.lib.show_errors) console.log(res);
-          callback(res);
-        },
-      }).done(function(res){
-	      callback(res);
-      });
-    }
-    
-    function makeFunc(domain, m) {
-      return function(attr, callback) {
-        attr = attr || {};
-        var curLib = {}
-        for (var curAttr in attr['data'])
-          curLib[curAttr] = attr['data'][curAttr];
+        // Core
+        var core = {
+            // Important vars n' stuff
+            lib: {
+                api_url: 'https://amiv-apidev.vsos.ethz.ch',
+                //api_url: 'https://nicco.io/amiv',
+                spec_url: 'lib/amiv/spec.json',
+                //spec_url: 'https://nicco.io/amiv/docs/spec.json',
+                authenticated: false,
+                ready: false,
+                req_time_out: 5000,
+                on_interval: 100,
+                auth_interval: 5000,
+                auth_allowed_fails: 5,
+                auth_fails: 0,
+                show_errors: false,
+            },
+            // Header Setup
+            header: {
+                req: {
+                    'get': ['Content-Type', 'Authorization'],
+                    'post': ['Content-Type', 'Authorization'],
+                    'put': ['Content-Type', 'Authorization', 'If-Match'],
+                    'patch': ['Content-Type', 'Authorization', 'If-Match'],
+                    'delete': ['Content-Type', 'Authorization', 'If-Match'],
+                },
+                make: {
+                    'Content-Type': function() {
+                        return 'application/json'
+                    },
+                    'Authorization': function() {
+                        if (get('cur_token') != null)
+                            return 'Basic ' + btoa(get('cur_token') + ':');
+                        return '';
+                    },
+                    'If-Match': function() {
+                        return null;
+                    }
+                }
+            }
+        }
 
-        var hdr = {};
-        for (var curHdr in attr['header'])
-          hdr[curHdr] = attr['header'][curHdr];
+        // Utility empty function for no callback
+        function dummy() {};
 
-        var curPath = '/' + domain;
-        var curLink = curPath;
-        if (attr['id'] != undefined) {
-          curPath += '/' + attr['id'];
-          curLink += '/{_id}';
+        //Save and get into localStorage
+        function set(cname, cvalue, exdays) {
+            window.localStorage.setItem('glob-' + cname, cvalue);
         }
 
-        if (get('cur_token') != null)
-          hdr['Authorization'] = 'Basic ' + btoa(get('cur_token') + ':');
+        function get(cname) {
+            return window.localStorage.getItem('glob-' + cname);
+        }
 
-        if (m != 'GET') {
-          if (m == 'POST' || m == 'PUT')
-            for (var param in lib[domain]['methods'][m][curLink]['params'])
-              if (lib[domain]['methods'][m][curLink]['params'][param]['required'] == true)
-                if (curLib[lib[domain]['methods'][m][curLink]['params'][param]['name']] == undefined)
-                  return 'Error: Missing ' + lib[domain]['methods'][m][curLink]['params'][param]['name'];
-          hdr['Content-Type'] = 'application/json';
-          curLib = JSON.stringify(curLib);
+        // Make Request
+        function req(attr, callback) {
+            callback = callback || function(msg) {
+                console.log(msg);
+            };
+            $.ajax({
+                url: core.lib.api_url + attr.path,
+                data: attr.data,
+                method: attr.method,
+                dataType: 'json',
+                timeout: core.lib.req_time_out,
+                headers: attr.headers,
+                error: function(res) {
+                    if (core.lib.show_errors) console.log(res);
+                    callback(res);
+                },
+            }).done(function(res) {
+                callback(res);
+            });
         }
-        req({
-          path: curPath,
-          method: m,
-          data: curLib,
-          headers: hdr,
-        }, callback);
-        return true;
-      };
-    }
 
-    $.ajax({
-      url: core.lib.spec_url,
-      dataType: 'json',
-      timeout: 5000,
-      success: function(d) {
-        var data = d['domains'];
-        for (var domain in data) {
-          lib[domain] = {};
-          lib[domain].methods = [];
-          for (var p in data[domain]['paths']) {
-            for (var m in data[domain]['paths'][p]) {
-              if (lib[domain].methods[m] == undefined) lib[domain].methods[m] = {};
-              lib[domain].methods[m][p] = data[domain]['paths'][p][m];
-            }
-          }
-          for (var m in lib[domain]['methods']) {
-            lib[domain][m] = makeFunc(domain, m);
-          }
+        function makeFunc(domain, m) {
+            return function(attr, callback) {
+                attr = attr || {};
+                var curLib = {}
+                for (var curAttr in attr['data'])
+                    curLib[curAttr] = attr['data'][curAttr];
+
+                var hdr = {};
+                for (var curHdr in attr['header'])
+                    hdr[curHdr] = attr['header'][curHdr];
+
+                var curPath = '/' + domain;
+                var curLink = curPath;
+                if (attr['id'] != undefined) {
+                    curPath += '/' + attr['id'];
+                    curLink += '/{_id}';
+                }
+
+                if (get('cur_token') != null)
+                    hdr['Authorization'] = 'Basic ' + btoa(get('cur_token') + ':');
+
+                if (m != 'GET') {
+                    if (m == 'POST' || m == 'PUT')
+                        for (var param in lib[domain]['methods'][m][curLink]['params'])
+                            if (lib[domain]['methods'][m][curLink]['params'][param]['required'] == true)
+                                if (curLib[lib[domain]['methods'][m][curLink]['params'][param]['name']] == undefined)
+                                    return 'Error: Missing ' + lib[domain]['methods'][m][curLink]['params'][param]['name'];
+                    hdr['Content-Type'] = 'application/json';
+                    curLib = JSON.stringify(curLib);
+                }
+                req({
+                    path: curPath,
+                    method: m,
+                    data: curLib,
+                    headers: hdr,
+                }, callback);
+                return true;
+            };
         }
-        checkAuth();
-      },
-      error: function(d) {
-        console.log('Cannot reach initialization spec: '+core.lib.spec_url);
-        console.log(d);
-      }
-    });
 
-    function checkAuth() {
-	    if (get('cur_token') != null) {
-        lib.sessions.GET({
-          data: {
-            where: 'token==["' + get('cur_token') + '"]'
-          }
-        }, function(res) {
-	        if (res !== undefined && res.hasOwnProperty('_items') && res['_items'].length > 0)
-            core.lib.authenticated = true;
-          else
-            core.lib.authenticated = false;
-          core.lib.ready = true;
-          checkAuth();
+        $.ajax({
+            url: core.lib.spec_url,
+            dataType: 'json',
+            timeout: 5000,
+            success: function(d) {
+                var data = d['domains'];
+                for (var domain in data) {
+                    lib[domain] = {};
+                    lib[domain].methods = [];
+                    for (var p in data[domain]['paths']) {
+                        for (var m in data[domain]['paths'][p]) {
+                            if (lib[domain].methods[m] == undefined) lib[domain].methods[m] = {};
+                            lib[domain].methods[m][p] = data[domain]['paths'][p][m];
+                        }
+                    }
+                    for (var m in lib[domain]['methods']) {
+                        lib[domain][m] = makeFunc(domain, m);
+                    }
+                }
+                checkAuth();
+            },
+            error: function(d) {
+                console.log('Cannot reach initialization spec: ' + core.lib.spec_url);
+                console.log(d);
+            }
         });
-      } else {
-	      core.lib.authenticated = false;
-        core.lib.ready = true;
-	      checkAuth();
-      }
-    }
-		
-		// Get the etag
-    lib.getEtag = function(curDomain, curId, callback) {
-      return lib[curDomain].GET({
-        id: curId
-      }, function(res) {
-        callback(res['_etag']);
-      });
-    }
-		
-		// Returns whether user is logged in
-    lib.authenticated = function() {
-      return core.lib.authenticated;
-    }
-		
-		// Login function
-    lib.login = function(curUser, curPass, callback) {
-      callback = callback || dummy;
-      req({
-        path: '/sessions/',
-        method: 'POST',
-        data: JSON.stringify({
-          user: curUser.toLowerCase(),
-          password: curPass
-        }),
-        headers: {
-          'Content-Type': 'application/json',
-        },
-      }, function(msg) {
-        var reqVar = ['token', 'user_id', 'id'];
-        for (var i in reqVar) {
-          lib['cur_' + reqVar[i]] = msg[reqVar[i]];
+
+        function checkAuth() {
+            if (get('cur_token') != null) {
+                lib.sessions.GET({
+                    data: {
+                        where: 'token==["' + get('cur_token') + '"]'
+                    }
+                }, function(res) {
+                    if (res !== undefined && res.hasOwnProperty('_items') && res['_items'].length > 0)
+                        core.lib.authenticated = true;
+                    else
+                        core.lib.authenticated = false;
+                    core.lib.ready = true;
+                    setTimeout(checkAuth, core.lib.auth_interval);
+                });
+            } else {
+                core.lib.authenticated = false;
+                core.lib.ready = true;
+                setTimeout(checkAuth, core.lib.auth_interval);
+            }
         }
-        if (msg['_status'] == 'OK') {
-          set('cur_token_id', msg['id'], 1);
-          set('cur_token', msg['token'], 1);
-          set('cur_user_id', parseInt(msg['user_id']), 1);
-          callback(true);
-        } else {
-          set('cur_token_id', null);
-          set('cur_token', null);
-          set('cur_user_id', null);
-          callback(false);
+
+        // Get the etag
+        lib.getEtag = function(curDomain, curId, callback) {
+            return lib[curDomain].GET({
+                id: curId
+            }, function(res) {
+                callback(res['_etag']);
+            });
         }
-      });
-    }
 
-		// Logout
-    lib.logout = function() {
-      // Deleting token from api and unsetting the vars
-      lib.sessions.DELETE({id: get('cur_token_id')}, function(res){
-        set('cur_token', null);
-        set('cur_token_id', null);
-	      set('cur_user_id', null);
-      });
-    }
-		
-		// Get info about the current user
-    lib.user = function(attr, callback) {
-	    callback = callback || dummy;
-      lib.users.GET({
-        id: get('cur_user_id')
-      }, function(res) {
-        if (typeof attr === 'object') {
-          var ret = {};
-          for (var key in attr)
-            ret[attr[key]] = res[attr[key]];
-          callback(ret);
-        } else {
-          callback(res[attr]);
+        // Returns whether user is logged in
+        lib.authenticated = function() {
+            return core.lib.authenticated;
         }
-      });
-    }
-		
-		// Get the necessary field for specific requests
-    lib.getRequiredFields = function(domain, type, wId) {
-      var curTree;
-      var resAttr = {};
-      if (wId)
-        curTree = lib[domain]['methods'][type]['/' + domain + '/{_id}']['params'];
-      else
-        curTree = lib[domain]['methods'][type]['/' + domain]['params'];
-      if (curTree.length == 0) return false;
-      else {
-        for (var i = 0; i < curTree.length; i++)
-          if (curTree[i].required == true)
-            resAttr[curTree[i].name] = curTree[i];
-      }
-      return resAttr;
-    }
 
-    //On function
-    lib.on = function(trigger, callback){
-	    if(callback){
-		    lib.on_mem[trigger].callback = callback;
-		    lib.on_mem[trigger].func();
-	    }
-    }
-    lib.on_mem = {
-	    ready: {
-		    func: function() {
-			    if (core.lib.ready)
-		        lib.on_mem.ready.callback();
-		      else setTimeout(function() {
-		        lib.on_mem.ready.func();
-		      }, core.lib.on_interval);
-			  }
-	    },
-	    login: {
-		    func: function(){
-			    if(core.lib.authenticated && !lib.on_mem.login.prev)
-			  		lib.on_mem.login.callback();
-			  	lib.on_mem.login.prev = core.lib.authenticated;
-			  	setTimeout(lib.on_mem.login.func, core.lib.on_interval);
-			  },
-			  prev: false,
-		  },
-	    logout: {
-		    func: function(){
-			    if(!core.lib.authenticated && lib.on_mem.logout.prev)
-			  		lib.on_mem.logout.callback();
-			  	lib.on_mem.logout.prev = core.lib.authenticated;
-			  	setTimeout(lib.on_mem.logout.func, core.lib.on_interval);
-			  },
-			  prev: false,
-		  },
-    }
+        // Login function
+        lib.login = function(curUser, curPass, callback) {
+            callback = callback || dummy;
+            req({
+                path: '/sessions/',
+                method: 'POST',
+                data: JSON.stringify({
+                    user: curUser.toLowerCase(),
+                    password: curPass
+                }),
+                headers: {
+                    'Content-Type': 'application/json',
+                },
+            }, function(msg) {
+                var reqVar = ['token', 'user_id', 'id'];
+                for (var i in reqVar) {
+                    lib['cur_' + reqVar[i]] = msg[reqVar[i]];
+                }
+                if (msg['_status'] == 'OK') {
+                    set('cur_token_id', msg['id'], 1);
+                    set('cur_token', msg['token'], 1);
+                    set('cur_user_id', parseInt(msg['user_id']), 1);
+                    callback(true);
+                } else {
+                    set('cur_token_id', null);
+                    set('cur_token', null);
+                    set('cur_user_id', null);
+                    callback(false);
+                }
+            });
+        }
 
-    return lib;
-  }
+        // Logout
+        lib.logout = function() {
+            // Deleting token from api and unsetting the vars
+            lib.sessions.DELETE({
+                id: get('cur_token_id')
+            }, function(res) {
+                set('cur_token', null);
+                set('cur_token_id', null);
+                set('cur_user_id', null);
+            });
+        }
 
-  if (typeof(window[lns]) === 'undefined') {
-    window[lns] = libgen();
-  } else {
-    console.log(lns+' already defined, please solve conflict');
-  }
+        // Get info about the current user
+        lib.user = function(attr, callback) {
+            callback = callback || dummy;
+            lib.users.GET({
+                id: get('cur_user_id')
+            }, function(res) {
+                if (typeof attr === 'object') {
+                    var ret = {};
+                    for (var key in attr)
+                        ret[attr[key]] = res[attr[key]];
+                    callback(ret);
+                } else {
+                    callback(res[attr]);
+                }
+            });
+        }
+
+        // Get the necessary field for specific requests
+        lib.getRequiredFields = function(domain, type, wId) {
+            var curTree;
+            var resAttr = {};
+            if (wId)
+                curTree = lib[domain]['methods'][type]['/' + domain + '/{_id}']['params'];
+            else
+                curTree = lib[domain]['methods'][type]['/' + domain]['params'];
+            if (curTree.length == 0) return false;
+            else {
+                for (var i = 0; i < curTree.length; i++)
+                    if (curTree[i].required == true)
+                        resAttr[curTree[i].name] = curTree[i];
+            }
+            return resAttr;
+        }
+
+        //On function
+        lib.on = function(trigger, callback) {
+            if (callback) {
+                lib.on_mem[trigger].callback = callback;
+                lib.on_mem[trigger].func();
+            }
+        }
+        lib.on_mem = {
+            ready: {
+                func: function() {
+                    if (core.lib.ready)
+                        lib.on_mem.ready.callback();
+                    else setTimeout(function() {
+                        lib.on_mem.ready.func();
+                    }, core.lib.on_interval);
+                }
+            },
+            login: {
+                func: function() {
+                    if (core.lib.authenticated && !lib.on_mem.login.prev)
+                        lib.on_mem.login.callback();
+                    lib.on_mem.login.prev = core.lib.authenticated;
+                    setTimeout(lib.on_mem.login.func, core.lib.on_interval);
+                },
+                prev: false,
+            },
+            logout: {
+                func: function() {
+                    if (!core.lib.authenticated && lib.on_mem.logout.prev)
+                        lib.on_mem.logout.callback();
+                    lib.on_mem.logout.prev = core.lib.authenticated;
+                    setTimeout(lib.on_mem.logout.func, core.lib.on_interval);
+                },
+                prev: false,
+            },
+        }
+
+        return lib;
+    }
+
+    if (typeof(window[lns]) === 'undefined') {
+        window[lns] = libgen();
+    } else {
+        console.log(lns + ' already defined, please solve conflict');
+    }
 
 })(window);
diff --git a/admin/lib/amiv/spec.json b/admin/lib/amiv/spec.json
index 671f633f5c9304b1236210a307f66386ca16960d..6dd3ffaf8f993ea8026d011db6153132f79eade1 100644
--- a/admin/lib/amiv/spec.json
+++ b/admin/lib/amiv/spec.json
@@ -1,2405 +1 @@
-{
-  "domains": {
-    "files": {
-      "paths": {
-        "/files/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a File"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a File"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a File"
-          }
-        },
-        "/files": {
-          "POST": {
-            "params": [
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "study_doc",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "studydocuments",
-                  "embeddable": true
-                }
-              },
-              {
-                "name": "name",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "required": true,
-                "type": "media",
-                "name": "data"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "study_doc_id",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "studydocuments",
-                  "embeddable": false
-                },
-                "required": true,
-                "type": "objectid"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Create a File"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all files"
-          }
-        }
-      },
-      "description": {}
-    },
-    "studydocuments": {
-      "paths": {
-        "/studydocuments/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Studydocument"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "files",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "files",
-                  "embeddable": true
-                }
-              },
-              {
-                "name": "name",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "professor",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "exam_session",
-                "nullable": true,
-                "required": false,
-                "maxlength": 10,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "author_name",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "semester",
-                "nullable": true,
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "department",
-                "nullable": true,
-                "required": false,
-                "maxlength": 4,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "lecture",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "type",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Update a Studydocument"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Studydocument"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Studydocument"
-          }
-        },
-        "/studydocuments": {
-          "POST": {
-            "params": [
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "files",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "files",
-                  "embeddable": true
-                }
-              },
-              {
-                "name": "name",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "professor",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "exam_session",
-                "nullable": true,
-                "required": false,
-                "maxlength": 10,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "author_name",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "semester",
-                "nullable": true,
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "department",
-                "nullable": true,
-                "required": false,
-                "maxlength": 4,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "lecture",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "type",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Create a Studydocument"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all studydocuments"
-          }
-        }
-      },
-      "description": {
-        "fields": {
-          "semester": "Study-Semester as an Integer starting with first semester Bachelor."
-        },
-        "general": "Study-documents are basically all documents that are connected to a course. This resource provides meta-data for the assigned files."
-      }
-    },
-    "users": {
-      "paths": {
-        "/users/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a User"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "name": "legi",
-                "nullable": true,
-                "required": false,
-                "maxlength": 8,
-                "unique": true,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "firstname",
-                "maxlength": 50,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "sessions",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "sessions",
-                  "embeddable": true
-                }
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "groupmemberships",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groupusermembers",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": false,
-                "name": "lastname",
-                "maxlength": 50,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "name": "rfid",
-                "nullable": true,
-                "required": false,
-                "maxlength": 6,
-                "unique": true,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "regex": "^.+@.+$",
-                "name": "email",
-                "required": true,
-                "maxlength": 100,
-                "unique": true,
-                "type": "string"
-              },
-              {
-                "name": "phone",
-                "nullable": true,
-                "required": false,
-                "maxlength": 20,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "membership",
-                "default": "none",
-                "required": true,
-                "maxlength": 13,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "eventsignups",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "eventsignups",
-                  "embeddable": true
-                }
-              },
-              {
-                "name": "nethz",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": true,
-                "type": "string",
-                "empty": false
-              },
-              {
-                "name": "gender",
-                "required": true,
-                "allowed": [
-                  "male",
-                  "female"
-                ],
-                "unique": false,
-                "type": "string",
-                "maxlength": 6
-              },
-              {
-                "name": "department",
-                "nullable": true,
-                "required": false,
-                "allowed": [
-                  "itet",
-                  "mavt"
-                ],
-                "unique": false,
-                "type": "string",
-                "maxlength": 5
-              },
-              {
-                "name": "password",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "send_newsletter",
-                "nullable": true,
-                "default": true,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              }
-            ],
-            "label": "Update a User"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a User"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a User"
-          }
-        },
-        "/users/{nethz}": {
-          "GET": {
-            "params": [
-              {
-                "name": "nethz",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": true,
-                "type": "string",
-                "empty": false
-              }
-            ],
-            "label": "Retrieve a User"
-          }
-        },
-        "/users": {
-          "POST": {
-            "params": [
-              {
-                "name": "legi",
-                "nullable": true,
-                "required": false,
-                "maxlength": 8,
-                "unique": true,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "firstname",
-                "maxlength": 50,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "sessions",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "sessions",
-                  "embeddable": true
-                }
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "groupmemberships",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groupusermembers",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": false,
-                "name": "lastname",
-                "maxlength": 50,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "name": "rfid",
-                "nullable": true,
-                "required": false,
-                "maxlength": 6,
-                "unique": true,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "regex": "^.+@.+$",
-                "name": "email",
-                "required": true,
-                "maxlength": 100,
-                "unique": true,
-                "type": "string"
-              },
-              {
-                "name": "phone",
-                "nullable": true,
-                "required": false,
-                "maxlength": 20,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "membership",
-                "default": "none",
-                "required": true,
-                "maxlength": 13,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "eventsignups",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "eventsignups",
-                  "embeddable": true
-                }
-              },
-              {
-                "name": "nethz",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": true,
-                "type": "string",
-                "empty": false
-              },
-              {
-                "name": "gender",
-                "required": true,
-                "allowed": [
-                  "male",
-                  "female"
-                ],
-                "unique": false,
-                "type": "string",
-                "maxlength": 6
-              },
-              {
-                "name": "department",
-                "nullable": true,
-                "required": false,
-                "allowed": [
-                  "itet",
-                  "mavt"
-                ],
-                "unique": false,
-                "type": "string",
-                "maxlength": 5
-              },
-              {
-                "name": "password",
-                "nullable": true,
-                "required": false,
-                "maxlength": 100,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "send_newsletter",
-                "nullable": true,
-                "default": true,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              }
-            ],
-            "label": "Create a User"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all users"
-          }
-        }
-      },
-      "description": {
-        "methods": {
-          "GET": "Authorization is required for most of the fields"
-        },
-        "general": "In general, the user data will be generated from LDAP-Data. However, one might change the RFID-Number or the membership-status. Extraordinary members may not have a LDAP-Account and can therefore access all given fields."
-      }
-    },
-    "": {
-      "paths": {
-        "/": {
-          "GET": {}
-        }
-      },
-      "description": {}
-    },
-    "purchases": {
-      "paths": {
-        "/purchases": {
-          "POST": {
-            "params": [
-              {
-                "unique": false,
-                "name": "slot",
-                "nullable": true,
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "user_id",
-                "nullable": true,
-                "required": false,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "timestamp",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "type",
-                "nullable": true,
-                "required": false,
-                "maxlength": 5,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Create a Purchase"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all purchases"
-          }
-        },
-        "/purchases/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Purchase"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "unique": false,
-                "name": "slot",
-                "nullable": true,
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "user_id",
-                "nullable": true,
-                "required": false,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "timestamp",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "type",
-                "nullable": true,
-                "required": false,
-                "maxlength": 5,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Update a Purchase"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Purchase"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Purchase"
-          }
-        }
-      },
-      "description": {
-        "fields": {
-          "slot": "Slot in the machine which was purchased(different items, which may have different prices)."
-        },
-        "general": "A beer machine or kaffi machine transaction. Users should be able to get beer or kaffi, if their last timestamp is older than one day and they are AMIV members. This resource is used to log their purchases."
-      }
-    },
-    "docs": {
-      "paths": {
-        "/docs/": {
-          "GET": {}
-        },
-        "/docs/spec.json": {
-          "GET": {}
-        }
-      },
-      "description": {}
-    },
-    "groupusermembers": {
-      "paths": {
-        "/groupusermembers/{_id}": {
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Groupusermember"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Groupusermember"
-          }
-        },
-        "/groupusermembers": {
-          "POST": {
-            "params": [
-              {
-                "name": "group_id",
-                "self_enrollment_must_be_allowed": true,
-                "required": true,
-                "unique_combination": [
-                  "groupusermembers",
-                  "user_id"
-                ],
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groups",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "user_id",
-                "unique_combination": [
-                  "groupusermembers",
-                  "group_id"
-                ],
-                "required": true,
-                "only_self_enrollment_for_group": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Create a Groupusermember"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all groupusermembers"
-          }
-        }
-      },
-      "description": {
-        "general": "Assignment of registered users to groups."
-      }
-    },
-    "eventsignups": {
-      "paths": {
-        "/eventsignups/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Eventsignup"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "unique": false,
-                "name": "additional_fields",
-                "nullable": true,
-                "required": false,
-                "type": "json_event_field"
-              },
-              {
-                "name": "user_id",
-                "unique_combination": [
-                  "eventsignups",
-                  "event_id"
-                ],
-                "required": true,
-                "not_patchable": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "only_self_enrollment_for_event": true,
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "signup_requirements": true,
-                "name": "event_id",
-                "unique_combination": [
-                  "eventsignups",
-                  "user_id",
-                  "email"
-                ],
-                "required": true,
-                "not_patchable": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "events",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "regex": "^.+@.+$",
-                "name": "email",
-                "email_signup_must_be_allowed": true,
-                "nullable": true,
-                "required": false,
-                "unique_combination": [
-                  "eventsignups",
-                  "event_id"
-                ],
-                "not_patchable": true,
-                "maxlength": 100,
-                "unique": false,
-                "type": "objectid",
-                "only_anonymous": true
-              },
-              {
-                "name": "_confirmed",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Update a Eventsignup"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Eventsignup"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Eventsignup"
-          }
-        },
-        "/eventsignups": {
-          "GET": {
-            "params": [],
-            "label": "Retrieve all eventsignups"
-          }
-        }
-      },
-      "description": {
-        "fields": {
-          "additional_fields": "Data-schema depends on 'additional_fields' from the mapped event. Please provide in json-format.",
-          "user_id": "To sign up as external user, set 'user_id' to '-1'",
-          "email": "For registered users, this is just a projection of your general email-address. External users need to provide their email here."
-        },
-        "general": "You can signup here for an existing event inside of the registration-window. External Users can only sign up to public events."
-      }
-    },
-    "static": {
-      "paths": {
-        "/static/bootstrap/{filename}": {
-          "GET": {}
-        },
-        "/static/{filename}": {
-          "GET": {}
-        }
-      },
-      "description": {}
-    },
-    "groups": {
-      "paths": {
-        "/groups": {
-          "POST": {
-            "params": [
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "user_subscribers",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groupusermembers",
-                  "embeddable": true
-                }
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "addresses",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "forwardaddresses",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": true,
-                "name": "name",
-                "maxlength": 100,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "has_zoidberg_share",
-                "default": false,
-                "required": true,
-                "type": "boolean"
-              },
-              {
-                "unique": false,
-                "name": "allow_self_enrollment",
-                "default": false,
-                "required": true,
-                "type": "boolean"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "moderator_id",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "required": true,
-                "type": "objectid"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "owner",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "unique": false,
-                "name": "permissions",
-                "nullable": true,
-                "required": false,
-                "type": "permissions_jsonschema"
-              }
-            ],
-            "label": "Create a Group"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all groups"
-          }
-        },
-        "/groups/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Group"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "user_subscribers",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groupusermembers",
-                  "embeddable": true
-                }
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "addresses",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "forwardaddresses",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": true,
-                "name": "name",
-                "maxlength": 100,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "has_zoidberg_share",
-                "default": false,
-                "required": true,
-                "type": "boolean"
-              },
-              {
-                "unique": false,
-                "name": "allow_self_enrollment",
-                "default": false,
-                "required": true,
-                "type": "boolean"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "moderator_id",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "required": true,
-                "type": "objectid"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "owner",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "unique": false,
-                "name": "permissions",
-                "nullable": true,
-                "required": false,
-                "type": "permissions_jsonschema"
-              }
-            ],
-            "label": "Update a Group"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Group"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Group"
-          }
-        }
-      },
-      "description": {
-        "fields": {
-          "has_zoidberg_share": "Wether the group has a share in the amiv storage",
-          "allow_self_enrollment": "If true, the group can be seen by all users and they can subscribe themselves",
-          "permissions": "permissions the group grants. has to be according to the jsonschema available at /notyetavailable"
-        },
-        "general": "This resource describes the different teams in AMIV.A group can grant API permissions and can be reached with several addresses. To see the subscriptions, have a look at '/groupusermembers'. To see the mail addresses, see '/forwardaddresses'."
-      }
-    },
-    "forwardaddresses": {
-      "paths": {
-        "/forwardaddresses/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Forwardaddresse"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "name": "group_id",
-                "required": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groups",
-                  "embeddable": false
-                },
-                "only_groups_you_moderate": true,
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "group",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groups",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "unique": true,
-                "name": "address",
-                "maxlength": 100,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              }
-            ],
-            "label": "Update a Forwardaddresse"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Forwardaddresse"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Forwardaddresse"
-          }
-        },
-        "/forwardaddresses": {
-          "POST": {
-            "params": [
-              {
-                "name": "group_id",
-                "required": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groups",
-                  "embeddable": false
-                },
-                "only_groups_you_moderate": true,
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "group",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "groups",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "unique": true,
-                "name": "address",
-                "maxlength": 100,
-                "required": true,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              }
-            ],
-            "label": "Create a Forwardaddresse"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all forwardaddresses"
-          }
-        }
-      },
-      "description": {
-        "fields": {
-          "address": "E-Mail address to forward"
-        },
-        "general": "An email address associated with a group. By adding an address here, all mails sent to that address will be forwarded to all members of the associated group."
-      }
-    },
-    "media": {
-      "paths": {
-        "/media/{_id}": {
-          "GET": {}
-        }
-      },
-      "description": {}
-    },
-    "sessions": {
-      "paths": {
-        "/sessions/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Session"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "unique": false,
-                "name": "token",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "user_id",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "required": true,
-                "type": "objectid"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Update a Session"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Session"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Session"
-          }
-        },
-        "/sessions": {
-          "GET": {
-            "params": [],
-            "label": "Retrieve all sessions"
-          }
-        }
-      },
-      "description": {
-        "methods": {
-          "POST": "Login and aquire a login token. Post the fields 'user' and 'password', the response will contain the token."
-        },
-        "general": "A session is used to authenticate a user after he  provided login data. To acquire a session use POST, which will  give you a token to use as the user field of HTTP basic auth  header with an empty password. POST requires user and password  fields."
-      }
-    },
-    "storage": {
-      "paths": {
-        "/storage/{filename}": {
-          "GET": {}
-        }
-      },
-      "description": {}
-    },
-    "joboffers": {
-      "paths": {
-        "/joboffers": {
-          "POST": {
-            "params": [
-              {
-                "unique": false,
-                "name": "title_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "name": "company",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "title_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "description_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "time_end",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "logo"
-              },
-              {
-                "filetype": [
-                  "pdf"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "pdf"
-              },
-              {
-                "unique": false,
-                "name": "description_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Create a Joboffer"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all joboffers"
-          }
-        },
-        "/joboffers/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Joboffer"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "unique": false,
-                "name": "title_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "name": "company",
-                "nullable": true,
-                "required": false,
-                "maxlength": 30,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "title_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "unique": false,
-                "name": "description_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "time_end",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "logo"
-              },
-              {
-                "filetype": [
-                  "pdf"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "pdf"
-              },
-              {
-                "unique": false,
-                "name": "description_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              }
-            ],
-            "label": "Update a Joboffer"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Joboffer"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Joboffer"
-          }
-        }
-      },
-      "description": {}
-    },
-    "confirmations": {
-      "paths": {
-        "/confirmations": {
-          "POST": {}
-        }
-      },
-      "description": {}
-    },
-    "events": {
-      "paths": {
-        "/events": {
-          "POST": {
-            "params": [
-              {
-                "unique": false,
-                "name": "title_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "allow_email_signup",
-                "default": false,
-                "required": true,
-                "type": "boolean"
-              },
-              {
-                "readonly": true,
-                "unique": false,
-                "name": "signup_count",
-                "required": false,
-                "type": "string"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_thumbnail"
-              },
-              {
-                "name": "time_end",
-                "nullable": true,
-                "later_than": "time_start",
-                "required": false,
-                "dependencies": [
-                  "time_start"
-                ],
-                "unique": false,
-                "type": "datetime"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "signups",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "eventsignups",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": false,
-                "name": "time_register_start",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "unique": false,
-                "name": "catchphrase_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "description_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "name": "time_register_end",
-                "nullable": true,
-                "later_than": "time_register_start",
-                "required": false,
-                "dependencies": [
-                  "time_register_start"
-                ],
-                "unique": false,
-                "type": "datetime"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_banner"
-              },
-              {
-                "unique": false,
-                "name": "time_start",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "spots",
-                "min": -1,
-                "if_this_then": [
-                  "time_register_start",
-                  "time_register_end"
-                ],
-                "required": true,
-                "unique": false,
-                "type": "integer"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "location",
-                "nullable": true,
-                "required": false,
-                "maxlength": 50,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "show_infoscreen",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "unique": false,
-                "name": "additional_fields",
-                "nullable": true,
-                "required": false,
-                "type": "json_schema"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_infoscreen"
-              },
-              {
-                "name": "price",
-                "nullable": true,
-                "required": false,
-                "min": 0,
-                "unique": false,
-                "type": "integer"
-              },
-              {
-                "unique": false,
-                "name": "title_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "description_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_poster"
-              },
-              {
-                "name": "show_announce",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "name": "show_website",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "unique": false,
-                "name": "catchphrase_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              }
-            ],
-            "label": "Create a Event"
-          },
-          "GET": {
-            "params": [],
-            "label": "Retrieve all events"
-          }
-        },
-        "/events/{_id}": {
-          "PUT": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Replace a Event"
-          },
-          "PATCH": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              },
-              {
-                "unique": false,
-                "name": "title_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "allow_email_signup",
-                "default": false,
-                "required": true,
-                "type": "boolean"
-              },
-              {
-                "readonly": true,
-                "unique": false,
-                "name": "signup_count",
-                "required": false,
-                "type": "string"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_thumbnail"
-              },
-              {
-                "name": "time_end",
-                "nullable": true,
-                "later_than": "time_start",
-                "required": false,
-                "dependencies": [
-                  "time_start"
-                ],
-                "unique": false,
-                "type": "datetime"
-              },
-              {
-                "required": false,
-                "type": "objectid",
-                "name": "signups",
-                "data_relation": {
-                  "field": "id",
-                  "resource": "eventsignups",
-                  "embeddable": true
-                }
-              },
-              {
-                "unique": false,
-                "name": "time_register_start",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "unique": false,
-                "name": "catchphrase_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "description_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "name": "time_register_end",
-                "nullable": true,
-                "later_than": "time_register_start",
-                "required": false,
-                "dependencies": [
-                  "time_register_start"
-                ],
-                "unique": false,
-                "type": "datetime"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_banner"
-              },
-              {
-                "unique": false,
-                "name": "time_start",
-                "nullable": true,
-                "required": false,
-                "type": "datetime"
-              },
-              {
-                "name": "_author",
-                "nullable": true,
-                "required": false,
-                "readonly": true,
-                "data_relation": {
-                  "field": "id",
-                  "resource": "users",
-                  "embeddable": false
-                },
-                "unique": false,
-                "type": "objectid"
-              },
-              {
-                "name": "spots",
-                "min": -1,
-                "if_this_then": [
-                  "time_register_start",
-                  "time_register_end"
-                ],
-                "required": true,
-                "unique": false,
-                "type": "integer"
-              },
-              {
-                "unique": true,
-                "name": "id",
-                "required": false,
-                "type": "integer"
-              },
-              {
-                "name": "location",
-                "nullable": true,
-                "required": false,
-                "maxlength": 50,
-                "unique": false,
-                "type": "string"
-              },
-              {
-                "name": "show_infoscreen",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "unique": false,
-                "name": "additional_fields",
-                "nullable": true,
-                "required": false,
-                "type": "json_schema"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_infoscreen"
-              },
-              {
-                "name": "price",
-                "nullable": true,
-                "required": false,
-                "min": 0,
-                "unique": false,
-                "type": "integer"
-              },
-              {
-                "unique": false,
-                "name": "title_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "unique": false,
-                "name": "description_en",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              },
-              {
-                "filetype": [
-                  "png",
-                  "jpeg"
-                ],
-                "required": false,
-                "type": "media",
-                "name": "img_poster"
-              },
-              {
-                "name": "show_announce",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "name": "show_website",
-                "nullable": true,
-                "default": false,
-                "required": false,
-                "unique": false,
-                "type": "boolean"
-              },
-              {
-                "unique": false,
-                "name": "catchphrase_de",
-                "nullable": true,
-                "required": false,
-                "type": "string"
-              }
-            ],
-            "label": "Update a Event"
-          },
-          "DELETE": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Delete a Event"
-          },
-          "GET": {
-            "params": [
-              {
-                "required": true,
-                "type": "string",
-                "name": "_id"
-              }
-            ],
-            "label": "Retrieve a Event"
-          }
-        }
-      },
-      "description": {
-        "fields": {
-          "additional_fields": "must be provided in form of a JSON-Schema. You can add here fields you want to know from people signing up going further than their email-address",
-          "price": "Price of the event as Integer in Rappen.",
-          "allow_email_signup": "If False, only AMIV-Members can sign up for this event",
-          "spots": "For no limit, set to '0'. If no signup required, set to '-1'. Otherwise just provide an integer."
-        },
-        "methods": {
-          "GET": "You are always allowed, even without session, to view AMIV-Events"
-        },
-        "general": "An Event is basically everything happening in the AMIV. All time fields have the format YYYY-MM-DDThh:mmZ, e.g. 2014-12-20T11:50:06Z"
-      }
-    }
-  },
-  "api_name": "API",
-  "base": "http:///",
-  "server_name": null
-}
\ No newline at end of file
+{"domains":{"files":{"paths":{"/files/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a File"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a File"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a File"}},"/files":{"POST":{"params":[{"required":false,"type":"objectid","name":"study_doc","data_relation":{"field":"id","resource":"studydocuments","embeddable":true}},{"name":"name","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"required":true,"type":"media","name":"data"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"study_doc_id","data_relation":{"field":"id","resource":"studydocuments","embeddable":false},"required":true,"type":"objectid"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Create a File"},"GET":{"params":[],"label":"Retrieve all files"}}},"description":{}},"studydocuments":{"paths":{"/studydocuments/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Studydocument"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"required":false,"type":"objectid","name":"files","data_relation":{"field":"id","resource":"files","embeddable":true}},{"name":"name","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"name":"professor","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"name":"exam_session","nullable":true,"required":false,"maxlength":10,"unique":false,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"author_name","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"unique":false,"name":"semester","nullable":true,"required":false,"type":"integer"},{"name":"department","nullable":true,"required":false,"maxlength":4,"unique":false,"type":"string"},{"name":"lecture","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"name":"type","nullable":true,"required":false,"maxlength":30,"unique":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Update a Studydocument"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Studydocument"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Studydocument"}},"/studydocuments":{"POST":{"params":[{"required":false,"type":"objectid","name":"files","data_relation":{"field":"id","resource":"files","embeddable":true}},{"name":"name","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"name":"professor","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"name":"exam_session","nullable":true,"required":false,"maxlength":10,"unique":false,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"author_name","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"unique":false,"name":"semester","nullable":true,"required":false,"type":"integer"},{"name":"department","nullable":true,"required":false,"maxlength":4,"unique":false,"type":"string"},{"name":"lecture","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"name":"type","nullable":true,"required":false,"maxlength":30,"unique":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Create a Studydocument"},"GET":{"params":[],"label":"Retrieve all studydocuments"}}},"description":{"fields":{"semester":"Study-Semester as an Integer starting with first semester Bachelor."},"general":"Study-documents are basically all documents that are connected to a course. This resource provides meta-data for the assigned files."}},"users":{"paths":{"/users/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a User"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"name":"legi","nullable":true,"required":false,"maxlength":8,"unique":true,"type":"string"},{"unique":false,"name":"firstname","maxlength":50,"required":true,"type":"string"},{"required":false,"type":"objectid","name":"sessions","data_relation":{"field":"id","resource":"sessions","embeddable":true}},{"required":false,"type":"objectid","name":"groupmemberships","data_relation":{"field":"id","resource":"groupusermembers","embeddable":true}},{"unique":false,"name":"lastname","maxlength":50,"required":true,"type":"string"},{"name":"rfid","nullable":true,"required":false,"maxlength":6,"unique":true,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"regex":"^.+@.+$","name":"email","required":true,"maxlength":100,"unique":true,"type":"string"},{"name":"phone","nullable":true,"required":false,"maxlength":20,"unique":false,"type":"string"},{"name":"membership","default":"none","required":true,"maxlength":13,"unique":false,"type":"string"},{"required":false,"type":"objectid","name":"eventsignups","data_relation":{"field":"id","resource":"eventsignups","embeddable":true}},{"name":"nethz","nullable":true,"required":false,"maxlength":30,"unique":true,"type":"string","empty":false},{"name":"gender","required":true,"allowed":["male","female"],"unique":false,"type":"string","maxlength":6},{"name":"department","nullable":true,"required":false,"allowed":["itet","mavt"],"unique":false,"type":"string","maxlength":5},{"name":"password","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"},{"name":"send_newsletter","nullable":true,"default":true,"required":false,"unique":false,"type":"boolean"}],"label":"Update a User"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a User"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a User"}},"/users/{nethz}":{"GET":{"params":[{"name":"nethz","nullable":true,"required":false,"maxlength":30,"unique":true,"type":"string","empty":false}],"label":"Retrieve a User"}},"/users":{"POST":{"params":[{"name":"legi","nullable":true,"required":false,"maxlength":8,"unique":true,"type":"string"},{"unique":false,"name":"firstname","maxlength":50,"required":true,"type":"string"},{"required":false,"type":"objectid","name":"sessions","data_relation":{"field":"id","resource":"sessions","embeddable":true}},{"required":false,"type":"objectid","name":"groupmemberships","data_relation":{"field":"id","resource":"groupusermembers","embeddable":true}},{"unique":false,"name":"lastname","maxlength":50,"required":true,"type":"string"},{"name":"rfid","nullable":true,"required":false,"maxlength":6,"unique":true,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"regex":"^.+@.+$","name":"email","required":true,"maxlength":100,"unique":true,"type":"string"},{"name":"phone","nullable":true,"required":false,"maxlength":20,"unique":false,"type":"string"},{"name":"membership","default":"none","required":true,"maxlength":13,"unique":false,"type":"string"},{"required":false,"type":"objectid","name":"eventsignups","data_relation":{"field":"id","resource":"eventsignups","embeddable":true}},{"name":"nethz","nullable":true,"required":false,"maxlength":30,"unique":true,"type":"string","empty":false},{"name":"gender","required":true,"allowed":["male","female"],"unique":false,"type":"string","maxlength":6},{"name":"department","nullable":true,"required":false,"allowed":["itet","mavt"],"unique":false,"type":"string","maxlength":5},{"name":"password","nullable":true,"required":false,"maxlength":100,"unique":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"},{"name":"send_newsletter","nullable":true,"default":true,"required":false,"unique":false,"type":"boolean"}],"label":"Create a User"},"GET":{"params":[],"label":"Retrieve all users"}}},"description":{"methods":{"GET":"Authorization is required for most of the fields"},"general":"In general, the user data will be generated from LDAP-Data. However, one might change the RFID-Number or the membership-status. Extraordinary members may not have a LDAP-Account and can therefore access all given fields."}},"":{"paths":{"/":{"GET":{}}},"description":{}},"purchases":{"paths":{"/purchases":{"POST":{"params":[{"unique":false,"name":"slot","nullable":true,"required":false,"type":"integer"},{"name":"user_id","nullable":true,"required":false,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"timestamp","nullable":true,"required":false,"type":"datetime"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"type","nullable":true,"required":false,"maxlength":5,"unique":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Create a Purchase"},"GET":{"params":[],"label":"Retrieve all purchases"}},"/purchases/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Purchase"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"unique":false,"name":"slot","nullable":true,"required":false,"type":"integer"},{"name":"user_id","nullable":true,"required":false,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"timestamp","nullable":true,"required":false,"type":"datetime"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"type","nullable":true,"required":false,"maxlength":5,"unique":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Update a Purchase"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Purchase"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Purchase"}}},"description":{"fields":{"slot":"Slot in the machine which was purchased(different items, which may have different prices)."},"general":"A beer machine or kaffi machine transaction. Users should be able to get beer or kaffi, if their last timestamp is older than one day and they are AMIV members. This resource is used to log their purchases."}},"docs":{"paths":{"/docs/":{"GET":{}},"/docs/spec.json":{"GET":{}}},"description":{}},"groupusermembers":{"paths":{"/groupusermembers/{_id}":{"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Groupusermember"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Groupusermember"}},"/groupusermembers":{"POST":{"params":[{"name":"group_id","self_enrollment_must_be_allowed":true,"required":true,"unique_combination":["groupusermembers","user_id"],"data_relation":{"field":"id","resource":"groups","embeddable":false},"unique":false,"type":"objectid"},{"name":"user_id","unique_combination":["groupusermembers","group_id"],"required":true,"only_self_enrollment_for_group":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Create a Groupusermember"},"GET":{"params":[],"label":"Retrieve all groupusermembers"}}},"description":{"general":"Assignment of registered users to groups."}},"eventsignups":{"paths":{"/eventsignups/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Eventsignup"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"unique":false,"name":"additional_fields","nullable":true,"required":false,"type":"json_event_field"},{"name":"user_id","unique_combination":["eventsignups","event_id"],"required":true,"not_patchable":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"only_self_enrollment_for_event":true,"unique":false,"type":"objectid"},{"signup_requirements":true,"name":"event_id","unique_combination":["eventsignups","user_id","email"],"required":true,"not_patchable":true,"data_relation":{"field":"id","resource":"events","embeddable":false},"unique":false,"type":"objectid"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"regex":"^.+@.+$","name":"email","email_signup_must_be_allowed":true,"nullable":true,"required":false,"unique_combination":["eventsignups","event_id"],"not_patchable":true,"maxlength":100,"unique":false,"type":"objectid","only_anonymous":true},{"name":"_confirmed","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Update a Eventsignup"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Eventsignup"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Eventsignup"}},"/eventsignups":{"GET":{"params":[],"label":"Retrieve all eventsignups"}}},"description":{"fields":{"additional_fields":"Data-schema depends on 'additional_fields' from the mapped event. Please provide in json-format.","user_id":"To sign up as external user, set 'user_id' to '-1'","email":"For registered users, this is just a projection of your general email-address. External users need to provide their email here."},"general":"You can signup here for an existing event inside of the registration-window. External Users can only sign up to public events."}},"static":{"paths":{"/static/bootstrap/{filename}":{"GET":{}},"/static/{filename}":{"GET":{}}},"description":{}},"groups":{"paths":{"/groups":{"POST":{"params":[{"required":false,"type":"objectid","name":"user_subscribers","data_relation":{"field":"id","resource":"groupusermembers","embeddable":true}},{"required":false,"type":"objectid","name":"addresses","data_relation":{"field":"id","resource":"forwardaddresses","embeddable":true}},{"unique":true,"name":"name","maxlength":100,"required":true,"type":"string"},{"unique":false,"name":"has_zoidberg_share","default":false,"required":true,"type":"boolean"},{"unique":false,"name":"allow_self_enrollment","default":false,"required":true,"type":"boolean"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"moderator_id","data_relation":{"field":"id","resource":"users","embeddable":false},"required":true,"type":"objectid"},{"required":false,"type":"objectid","name":"owner","data_relation":{"field":"id","resource":"users","embeddable":true}},{"unique":true,"name":"id","required":false,"type":"integer"},{"unique":false,"name":"permissions","nullable":true,"required":false,"type":"permissions_jsonschema"}],"label":"Create a Group"},"GET":{"params":[],"label":"Retrieve all groups"}},"/groups/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Group"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"required":false,"type":"objectid","name":"user_subscribers","data_relation":{"field":"id","resource":"groupusermembers","embeddable":true}},{"required":false,"type":"objectid","name":"addresses","data_relation":{"field":"id","resource":"forwardaddresses","embeddable":true}},{"unique":true,"name":"name","maxlength":100,"required":true,"type":"string"},{"unique":false,"name":"has_zoidberg_share","default":false,"required":true,"type":"boolean"},{"unique":false,"name":"allow_self_enrollment","default":false,"required":true,"type":"boolean"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"moderator_id","data_relation":{"field":"id","resource":"users","embeddable":false},"required":true,"type":"objectid"},{"required":false,"type":"objectid","name":"owner","data_relation":{"field":"id","resource":"users","embeddable":true}},{"unique":true,"name":"id","required":false,"type":"integer"},{"unique":false,"name":"permissions","nullable":true,"required":false,"type":"permissions_jsonschema"}],"label":"Update a Group"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Group"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Group"}}},"description":{"fields":{"has_zoidberg_share":"Wether the group has a share in the amiv storage","allow_self_enrollment":"If true, the group can be seen by all users and they can subscribe themselves","permissions":"permissions the group grants. has to be according to the jsonschema available at /notyetavailable"},"general":"This resource describes the different teams in AMIV.A group can grant API permissions and can be reached with several addresses. To see the subscriptions, have a look at '/groupusermembers'. To see the mail addresses, see '/forwardaddresses'."}},"forwardaddresses":{"paths":{"/forwardaddresses/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Forwardaddresse"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"name":"group_id","required":true,"data_relation":{"field":"id","resource":"groups","embeddable":false},"only_groups_you_moderate":true,"unique":false,"type":"objectid"},{"required":false,"type":"objectid","name":"group","data_relation":{"field":"id","resource":"groups","embeddable":true}},{"unique":true,"name":"id","required":false,"type":"integer"},{"unique":true,"name":"address","maxlength":100,"required":true,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"}],"label":"Update a Forwardaddresse"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Forwardaddresse"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Forwardaddresse"}},"/forwardaddresses":{"POST":{"params":[{"name":"group_id","required":true,"data_relation":{"field":"id","resource":"groups","embeddable":false},"only_groups_you_moderate":true,"unique":false,"type":"objectid"},{"required":false,"type":"objectid","name":"group","data_relation":{"field":"id","resource":"groups","embeddable":true}},{"unique":true,"name":"id","required":false,"type":"integer"},{"unique":true,"name":"address","maxlength":100,"required":true,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"}],"label":"Create a Forwardaddresse"},"GET":{"params":[],"label":"Retrieve all forwardaddresses"}}},"description":{"fields":{"address":"E-Mail address to forward"},"general":"An email address associated with a group. By adding an address here, all mails sent to that address will be forwarded to all members of the associated group."}},"media":{"paths":{"/media/{_id}":{"GET":{}}},"description":{}},"sessions":{"paths":{"/sessions/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Session"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"unique":false,"name":"token","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"user_id","data_relation":{"field":"id","resource":"users","embeddable":false},"required":true,"type":"objectid"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Update a Session"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Session"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Session"}},"/sessions":{"GET":{"params":[],"label":"Retrieve all sessions"}}},"description":{"methods":{"POST":"Login and aquire a login token. Post the fields 'user' and 'password', the response will contain the token."},"general":"A session is used to authenticate a user after he  provided login data. To acquire a session use POST, which will  give you a token to use as the user field of HTTP basic auth  header with an empty password. POST requires user and password  fields."}},"storage":{"paths":{"/storage/{filename}":{"GET":{}}},"description":{}},"joboffers":{"paths":{"/joboffers":{"POST":{"params":[{"unique":false,"name":"title_de","nullable":true,"required":false,"type":"string"},{"name":"company","nullable":true,"required":false,"maxlength":30,"unique":false,"type":"string"},{"unique":false,"name":"title_en","nullable":true,"required":false,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"description_en","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"time_end","nullable":true,"required":false,"type":"datetime"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"logo"},{"filetype":["pdf"],"required":false,"type":"media","name":"pdf"},{"unique":false,"name":"description_de","nullable":true,"required":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Create a Joboffer"},"GET":{"params":[],"label":"Retrieve all joboffers"}},"/joboffers/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Joboffer"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"unique":false,"name":"title_de","nullable":true,"required":false,"type":"string"},{"name":"company","nullable":true,"required":false,"maxlength":30,"unique":false,"type":"string"},{"unique":false,"name":"title_en","nullable":true,"required":false,"type":"string"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"unique":false,"name":"description_en","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"time_end","nullable":true,"required":false,"type":"datetime"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"logo"},{"filetype":["pdf"],"required":false,"type":"media","name":"pdf"},{"unique":false,"name":"description_de","nullable":true,"required":false,"type":"string"},{"unique":true,"name":"id","required":false,"type":"integer"}],"label":"Update a Joboffer"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Joboffer"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Joboffer"}}},"description":{}},"confirmations":{"paths":{"/confirmations":{"POST":{}}},"description":{}},"events":{"paths":{"/events":{"POST":{"params":[{"unique":false,"name":"title_de","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"allow_email_signup","default":false,"required":true,"type":"boolean"},{"readonly":true,"unique":false,"name":"signup_count","required":false,"type":"string"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_thumbnail"},{"name":"time_end","nullable":true,"later_than":"time_start","required":false,"dependencies":["time_start"],"unique":false,"type":"datetime"},{"required":false,"type":"objectid","name":"signups","data_relation":{"field":"id","resource":"eventsignups","embeddable":true}},{"unique":false,"name":"time_register_start","nullable":true,"required":false,"type":"datetime"},{"unique":false,"name":"catchphrase_en","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"description_de","nullable":true,"required":false,"type":"string"},{"name":"time_register_end","nullable":true,"later_than":"time_register_start","required":false,"dependencies":["time_register_start"],"unique":false,"type":"datetime"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_banner"},{"unique":false,"name":"time_start","nullable":true,"required":false,"type":"datetime"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"spots","min":-1,"if_this_then":["time_register_start","time_register_end"],"required":true,"unique":false,"type":"integer"},{"unique":true,"name":"id","required":false,"type":"integer"},{"name":"location","nullable":true,"required":false,"maxlength":50,"unique":false,"type":"string"},{"name":"show_infoscreen","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"unique":false,"name":"additional_fields","nullable":true,"required":false,"type":"json_schema"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_infoscreen"},{"name":"price","nullable":true,"required":false,"min":0,"unique":false,"type":"integer"},{"unique":false,"name":"title_en","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"description_en","nullable":true,"required":false,"type":"string"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_poster"},{"name":"show_announce","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"name":"show_website","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"unique":false,"name":"catchphrase_de","nullable":true,"required":false,"type":"string"}],"label":"Create a Event"},"GET":{"params":[],"label":"Retrieve all events"}},"/events/{_id}":{"PUT":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Replace a Event"},"PATCH":{"params":[{"required":true,"type":"string","name":"_id"},{"unique":false,"name":"title_de","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"allow_email_signup","default":false,"required":true,"type":"boolean"},{"readonly":true,"unique":false,"name":"signup_count","required":false,"type":"string"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_thumbnail"},{"name":"time_end","nullable":true,"later_than":"time_start","required":false,"dependencies":["time_start"],"unique":false,"type":"datetime"},{"required":false,"type":"objectid","name":"signups","data_relation":{"field":"id","resource":"eventsignups","embeddable":true}},{"unique":false,"name":"time_register_start","nullable":true,"required":false,"type":"datetime"},{"unique":false,"name":"catchphrase_en","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"description_de","nullable":true,"required":false,"type":"string"},{"name":"time_register_end","nullable":true,"later_than":"time_register_start","required":false,"dependencies":["time_register_start"],"unique":false,"type":"datetime"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_banner"},{"unique":false,"name":"time_start","nullable":true,"required":false,"type":"datetime"},{"name":"_author","nullable":true,"required":false,"readonly":true,"data_relation":{"field":"id","resource":"users","embeddable":false},"unique":false,"type":"objectid"},{"name":"spots","min":-1,"if_this_then":["time_register_start","time_register_end"],"required":true,"unique":false,"type":"integer"},{"unique":true,"name":"id","required":false,"type":"integer"},{"name":"location","nullable":true,"required":false,"maxlength":50,"unique":false,"type":"string"},{"name":"show_infoscreen","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"unique":false,"name":"additional_fields","nullable":true,"required":false,"type":"json_schema"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_infoscreen"},{"name":"price","nullable":true,"required":false,"min":0,"unique":false,"type":"integer"},{"unique":false,"name":"title_en","nullable":true,"required":false,"type":"string"},{"unique":false,"name":"description_en","nullable":true,"required":false,"type":"string"},{"filetype":["png","jpeg"],"required":false,"type":"media","name":"img_poster"},{"name":"show_announce","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"name":"show_website","nullable":true,"default":false,"required":false,"unique":false,"type":"boolean"},{"unique":false,"name":"catchphrase_de","nullable":true,"required":false,"type":"string"}],"label":"Update a Event"},"DELETE":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Delete a Event"},"GET":{"params":[{"required":true,"type":"string","name":"_id"}],"label":"Retrieve a Event"}}},"description":{"fields":{"additional_fields":"must be provided in form of a JSON-Schema. You can add here fields you want to know from people signing up going further than their email-address","price":"Price of the event as Integer in Rappen.","allow_email_signup":"If False, only AMIV-Members can sign up for this event","spots":"For no limit, set to '0'. If no signup required, set to '-1'. Otherwise just provide an integer."},"methods":{"GET":"You are always allowed, even without session, to view AMIV-Events"},"general":"An Event is basically everything happening in the AMIV. All time fields have the format YYYY-MM-DDThh:mmZ, e.g. 2014-12-20T11:50:06Z"}}},"api_name":"API","base":"http:///","server_name":null}
diff --git a/admin/lib/cust/main.css b/admin/lib/cust/main.css
index 46eed464137f7895d0e7768bcb736f91e4d41462..1de6c3428b1f1670afec431a18ab3e208623f019 100644
--- a/admin/lib/cust/main.css
+++ b/admin/lib/cust/main.css
@@ -139,7 +139,7 @@ body {
 	MAIN NAVBAR
 */
 
-.navbar-main .cust-menu>li {
+.navbar-main .container-fluid>ul>li {
     float: left;
 }
 
diff --git a/admin/lib/cust/main.js b/admin/lib/cust/main.js
index ab4af9ad890d40e936f93794d54dc6d358a76efa..27febd792e77777f47b393aa43e894ab4b652ab7 100644
--- a/admin/lib/cust/main.js
+++ b/admin/lib/cust/main.js
@@ -22,18 +22,27 @@ var tools = {
     },
 
     // Modal function
-    modalStatus: 0,
+    modalFunc: {
+        init: 0,
+    },
     modal: function(attr) {
         attr = attr || {};
+        if (attr.success !== undefined && typeof(attr.success) == 'function')
+            tools.modalFunc.success = attr.success;
+        if (attr.cancel !== undefined && typeof(attr.cancel) == 'function')
+            tools.modalFunc.cancel = attr.cancel;
+        if (!tools.modalFunc.init) {
+            $('.modalCont .modal-footer .btn-primary').click(function() {
+                $('.modalCont').off('hide.bs.modal').modal('hide');
+                tools.modalFunc.success();
+            });
+            $('.modalCont').on('hide.bs.modal', tools.modalFunc.cancel);
+            tools.modalFunc.init = 1;
+        }
         $('.modalCont .modal-title').html(attr.head);
         $('.modalCont .modal-body').html(attr.body);
-        $('.modalCont .modal-footer .btn-primary').html(attr.button).click(function() {
-            $('.modalCont').off('hide.bs.modal').modal('hide');
-            if (typeof(attr.success) == 'function')
-                attr.success();
-        });
-        if (typeof(attr.cancel) == 'function')
-            $('.modalCont').modal('show').on('hide.bs.modal', attr.cancel);
+        $('.modalCont .modal-footer .btn-primary').html(attr.button);
+        $('.modalCont').modal('show');
     },
 
     // Ajax loading gunction and getting the tools