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