From daf449b5675113127ca3263ee9d4bd1007396ac3 Mon Sep 17 00:00:00 2001
From: CupCakeArmy <nicco.borgioli@gmail.com>
Date: Fri, 1 Apr 2016 15:24:10 +0200
Subject: [PATCH] Adding the API Specification

---
 admin/lib/amiv/core.js   |    0
 admin/lib/amiv/spec.json | 2405 ++++++++++++++++++++++++++++++++++++++
 admin/lib/cust/main.css  |    4 +-
 admin/lib/cust/main.js   |   22 +-
 4 files changed, 2423 insertions(+), 8 deletions(-)
 delete mode 100644 admin/lib/amiv/core.js
 create mode 100644 admin/lib/amiv/spec.json

diff --git a/admin/lib/amiv/core.js b/admin/lib/amiv/core.js
deleted file mode 100644
index e69de29..0000000
diff --git a/admin/lib/amiv/spec.json b/admin/lib/amiv/spec.json
new file mode 100644
index 0000000..671f633
--- /dev/null
+++ b/admin/lib/amiv/spec.json
@@ -0,0 +1,2405 @@
+{
+  "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
diff --git a/admin/lib/cust/main.css b/admin/lib/cust/main.css
index bf34e6d..f82c767 100644
--- a/admin/lib/cust/main.css
+++ b/admin/lib/cust/main.css
@@ -49,7 +49,9 @@ body {
 .loginPanel {
 	width: 100%;
 	height: 100%;
-	display: none;
+	top: 0%;
+	left: 0%;
+	display: flex;
 	align-items: center;
 	justify-content: center;
 	position: fixed;
diff --git a/admin/lib/cust/main.js b/admin/lib/cust/main.js
index 583c5f0..0df30ff 100644
--- a/admin/lib/cust/main.js
+++ b/admin/lib/cust/main.js
@@ -34,8 +34,8 @@ var tools = {
 		  $.ajax({
 		    url: 'tools/' + tools.curTool + '.tool',
 		    dataType: 'html',
-		    error: function(msg) {
-		      tools.log(msg, 's');
+		    error: function() {
+		      tools.log('Tool not found', 'e');
 		    }
 		  }).done(function(data){
 		    $('#main-content').html(data);
@@ -82,12 +82,20 @@ var tools = {
 	Initialization of page
 */
 
+//Binding tool change whenever the hash is changed
+window.onhashchange = tools.getTool;
 //Setting home if no other tool is selected
 if(window.location.hash == '' || window.location.hash == null)
 	window.location.hash = 'home';
-tools.getTool();
-//Binding tool change whenever the hash is changed
-window.onhashchange = tools.getTool;
 
-// Binding the button for toggeling the sidemenu
-$('.toggleSidebarBtn').click(tools.toggleSideMenu);
\ No newline at end of file
+// Binding the buttons
+$('.toggleSidebarBtn').click(tools.toggleSideMenu);
+
+amivaccess.ready(function(){
+	
+	tools.getTool();
+	
+	if(amivaccess.authenticated())
+		$('.loginPanel').css({'top':'-100%'});
+	
+});
\ No newline at end of file
-- 
GitLab