diff --git a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
index 660c4538134e08bb8686e97853a48d64eae4ac5f..07a3ffc623c525048112b12d3b21797a8b048277 100644
--- a/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/AudienceQuestionController.java
@@ -31,6 +31,14 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+import com.wordnik.swagger.annotations.ApiResponse;
+import com.wordnik.swagger.annotations.ApiResponses;
+import com.wordnik.swagger.annotations.Authorization;
+import com.wordnik.swagger.annotations.AuthorizationScope;
+
 import de.thm.arsnova.entities.InterposedReadingCount;
 import de.thm.arsnova.entities.transport.InterposedQuestion;
 import de.thm.arsnova.exceptions.BadRequestException;
@@ -43,6 +51,7 @@ import de.thm.arsnova.web.Pagination;
  */
 @RestController
 @RequestMapping("/audiencequestion")
+@Api(value = "/audiencequestion", description = "the Audience Question API")
 public class AudienceQuestionController extends PaginationController {
 
 	public static final Logger LOGGER = LoggerFactory.getLogger(AudienceQuestionController.class);
@@ -50,34 +59,62 @@ public class AudienceQuestionController extends PaginationController {
 	@Autowired
 	private IQuestionService questionService;
 
+	@ApiOperation(value = "Count all the questions in current session",
+				  nickname = "getAudienceQuestionCount",
+				  notes = "getInterposedCount(String sessionkey, String user)"/*,
+				  authorizations = {
+			          @Authorization(
+			                  value = "arsnovaoauth",
+			                  scopes = {
+			                          @AuthorizationScope(
+			                                  scope = "getInterposedCount:questions",
+			                                  description = "Count all the questions in current session")
+			                          }
+			                  )
+			    }*/)
 	@RequestMapping(value = "/count", method = RequestMethod.GET)
 	@DeprecatedApi
-	public int getInterposedCount(@RequestParam final String sessionkey) {
+	public int getInterposedCount(@ApiParam(value="Session-Key from current session", required=true) @RequestParam final String sessionkey) {
 		return questionService.getInterposedCount(sessionkey);
 	}
 
+	@ApiOperation(value = "count all unread interposed questions",
+				  nickname = "getUnreadInterposedCount",
+				  notes = "getUnreadInterposedCount(String sessionkey, String user)")
 	@RequestMapping(value = "/readcount", method = RequestMethod.GET)
 	@DeprecatedApi
-	public InterposedReadingCount getUnreadInterposedCount(@RequestParam("sessionkey") final String sessionkey, String user) {
+	public InterposedReadingCount getUnreadInterposedCount(@ApiParam(value = "Session-Key from current session", required = true) @RequestParam("sessionkey") final String sessionkey, String user) {
 		return questionService.getInterposedReadingCount(sessionkey, user);
 	}
 
+	@ApiOperation(value = "Retrieves all Interposed Questions for a Session",
+				  nickname = "getInterposedQuestions",
+				  notes = "Repsonse structure: InterposedQuestion[], encoding-type: application/json")
 	@RequestMapping(value = "/", method = RequestMethod.GET)
 	@Pagination
-	public List<InterposedQuestion> getInterposedQuestions(@RequestParam final String sessionkey) {
+	public List<InterposedQuestion> getInterposedQuestions(@ApiParam(value = "Session-Key from current session", required = true) @RequestParam final String sessionkey) {
 		return InterposedQuestion.fromList(questionService.getInterposedQuestions(sessionkey, offset, limit));
 	}
 
+	@ApiOperation(value = "Retrieves an InterposedQuestion",
+				  nickname = "getInterposedQuestion",
+				  notes = "Repsonse structure: InterposedQuestion, encoding-type: application/json")
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.GET)
-	public InterposedQuestion getInterposedQuestion(@PathVariable final String questionId) {
+	public InterposedQuestion getInterposedQuestion(@ApiParam(value = "ID of the question that needs to be deleted", required = true) @PathVariable final String questionId) {
 		return new InterposedQuestion(questionService.readInterposedQuestion(questionId));
 	}
 
+	@ApiOperation(value = "Creates a new Interposed Question for a Session and returns the InterposedQuestion's data",
+				  nickname = "postInterposedQuestion",
+				  notes = "Repsonse structure: InterposedQuestion, encoding-type: application/json")
+	@ApiResponses(value = {
+    	@ApiResponse(code = 400, message = "Bad Request - The Api cannot or will not process the request due to something that is perceived to be a client error")
+    })
 	@RequestMapping(value = "/", method = RequestMethod.POST)
 	@ResponseStatus(HttpStatus.CREATED)
 	public void postInterposedQuestion(
-			@RequestParam final String sessionkey,
-			@RequestBody final de.thm.arsnova.entities.InterposedQuestion question
+			@ApiParam(value="Session-Key from current session", required=true) @RequestParam final String sessionkey,
+			@ApiParam(value="the body from the new question", required=true) @RequestBody final de.thm.arsnova.entities.InterposedQuestion question
 			) {
 		if (questionService.saveQuestion(question)) {
 			return;
@@ -86,8 +123,11 @@ public class AudienceQuestionController extends PaginationController {
 		throw new BadRequestException();
 	}
 
+	@ApiOperation(value = "Deletes an InterposedQuestion",
+				  nickname = "deleteInterposedQuestion",
+				  notes = "Repsonse structure: none, encoding-type: application/json")
 	@RequestMapping(value = "/{questionId}", method = RequestMethod.DELETE)
-	public void deleteInterposedQuestion(@PathVariable final String questionId) {
+	public void deleteInterposedQuestion(@ApiParam(value = "ID of the question that needs to be deleted", required=true) @PathVariable final String questionId) {
 		questionService.deleteInterposedQuestion(questionId);
 	}
 }
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 5dd16d2aa0f72390e054a0d4effe6019eb6285b2..e41ca703a0f145cfcaae7c91767b30abfb03bd56 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -36,6 +36,12 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+import com.wordnik.swagger.annotations.ApiResponse;
+import com.wordnik.swagger.annotations.ApiResponses;
+
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.SessionFeature;
@@ -57,6 +63,7 @@ import de.thm.arsnova.web.Pagination;
  */
 @RestController
 @RequestMapping("/session")
+@Api(value = "/session", description = "the Session Controller API")
 public class SessionController extends PaginationController {
 
 	public static final Logger LOGGER = LoggerFactory.getLogger(SessionController.class);
@@ -67,25 +74,38 @@ public class SessionController extends PaginationController {
 	@Autowired
 	private IUserService userService;
 
+	@ApiOperation(value = "Count all the questions in current session",
+				  nickname = "joinSession",
+				  notes = "Repsonse structure: none, encoding-type: application/json")
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.GET)
-	public Session joinSession(@PathVariable final String sessionkey) {
+	public Session joinSession(@ApiParam(value = "Session-Key from current session", required = true) @PathVariable final String sessionkey) {
 		return Session.anonymizedCopy(sessionService.getSession(sessionkey));
 	}
 
+	@ApiOperation(value = "deletes a session",
+				  nickname = "deleteSession",
+				  notes = "Repsonse structure: none, encoding-type: application/json")
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.DELETE)
-	public void deleteSession(@PathVariable final String sessionkey) {
+	public void deleteSession(@ApiParam(value = "Session-Key from current session", required = true) @PathVariable final String sessionkey) {
 		sessionService.deleteSession(sessionkey);
 	}
 
 	@DeprecatedApi
 	@RequestMapping(value = "/{sessionkey}/activeusercount", method = RequestMethod.GET)
-	public int countActiveUsers(@PathVariable final String sessionkey) {
+	public int countActiveUsers(@ApiParam(value = "Session-Key from current session", required = true) @PathVariable final String sessionkey) {
 		return sessionService.activeUsers(sessionkey);
 	}
 
+	@ApiOperation(value = "Creates a new Session and returns the Session's data",
+				  nickname = "postNewSession",
+				  notes = "Repsonse structure: Session, encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 201, message = "The request has been fulfilled and resulted in a new resource being created"),
+		@ApiResponse(code = 503, message = "Service Unavailable - The Api is currently unavailable (because it is overloaded or down for maintenance)")
+	})
 	@RequestMapping(value = "/", method = RequestMethod.POST)
 	@ResponseStatus(HttpStatus.CREATED)
-	public Session postNewSession(@RequestBody final Session session, final HttpServletResponse response) {
+	public Session postNewSession(@ApiParam(value = "current session", required = true) @RequestBody final Session session, @ApiParam(value = "http servlet response", required = true) final HttpServletResponse response) {
 		if (session != null && session.isCourseSession()) {
 			final List<Course> courses = new ArrayList<Course>();
 			final Course course = new Course();
@@ -109,20 +129,30 @@ public class SessionController extends PaginationController {
 		return newSession;
 	}
 
+	@ApiOperation(value = "updates a session",
+				  nickname = "postNewSession",
+				  notes = "Request encoding: none, Repsonse structure: Session, encoding-type: application/json")
 	@RequestMapping(value = "/{sessionkey}", method = RequestMethod.PUT)
 	public Session updateSession(
-			@PathVariable final String sessionkey,
-			@RequestBody final Session session
+			@ApiParam(value = "session-key from current session", required = true) @PathVariable final String sessionkey,
+			@ApiParam(value = "current session", required = true) @RequestBody final Session session
 			) {
 		return sessionService.updateSession(sessionkey, session);
 	}
 
+	@ApiOperation(value = "Retrieves a list of Sessions",
+				  nickname = "getSessions",
+				  notes = "Request encoding: Query string, Repsonse structure: Session[], encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 204, message = "No Content - successfully processed the request"),
+		@ApiResponse(code = 501, message = "Not implemented - The Api either does not recognize the request method, or it lacks the ability to fulfil the request")
+	})
 	@RequestMapping(value = "/", method = RequestMethod.GET)
 	@Pagination
 	public List<Session> getSessions(
-			@RequestParam(value = "ownedonly", defaultValue = "false") final boolean ownedOnly,
-			@RequestParam(value = "visitedonly", defaultValue = "false") final boolean visitedOnly,
-			@RequestParam(value = "sortby", defaultValue = "name") final String sortby,
+			@ApiParam(value="ownedOnly", required=true) @RequestParam(value = "ownedonly", defaultValue = "false") final boolean ownedOnly,
+			@ApiParam(value="visitedOnly", required=true) @RequestParam(value = "visitedonly", defaultValue = "false") final boolean visitedOnly,
+			@ApiParam(value="sortby", required=true) @RequestParam(value = "sortby", defaultValue = "name") final String sortby,
 			final HttpServletResponse response
 			) {
 		List<Session> sessions = null;
@@ -161,12 +191,18 @@ public class SessionController extends PaginationController {
 	 * @param response
 	 * @return
 	 */
+	@ApiOperation(value = "Retrieves a Session",
+				  nickname = "getMySessions",
+				  notes = "Request encoding: none, Repsonse structure: Session, encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 204, message = "No Content - successfully processed the request")
+	})
 	@RequestMapping(value = "/", method = RequestMethod.GET, params = "statusonly=true")
 	@Pagination
 	public List<SessionInfo> getMySessions(
-			@RequestParam(value = "visitedonly", defaultValue = "false") final boolean visitedOnly,
-			@RequestParam(value = "sortby", defaultValue = "name") final String sortby,
-			final HttpServletResponse response
+			@ApiParam(value = "visitedOnly", required = true) @RequestParam(value = "visitedonly", defaultValue = "false") final boolean visitedOnly,
+			@ApiParam(value = "sort by", required = false) @RequestParam(value = "sortby", defaultValue = "name") final String sortby,
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		List<SessionInfo> sessions;
 		if (!visitedOnly) {
@@ -188,9 +224,15 @@ public class SessionController extends PaginationController {
 		return sessions;
 	}
 
+	@ApiOperation(value = "Retrieves all public pool sessions for the current user",
+				  nickname = "getMyPublicPoolSessions",
+				  notes = "Request encoding: none, Repsonse structure: Session[], encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 204, message = "No Content - successfully processed the request")
+	})
 	@RequestMapping(value = "/publicpool", method = RequestMethod.GET, params = "statusonly=true")
 	public List<SessionInfo> getMyPublicPoolSessions(
-			final HttpServletResponse response
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		List<SessionInfo> sessions = sessionService.getMyPublicPoolSessionsInfo();
 
@@ -202,9 +244,15 @@ public class SessionController extends PaginationController {
 		return sessions;
 	}
 
+	@ApiOperation(value = "Retrieves all public pool sessions",
+				  nickname = "getMyPublicPoolSessions",
+				  notes = "Request encoding: none, Repsonse structure: Session[], encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 204, message = "No Content - successfully processed the request")
+	})
 	@RequestMapping(value = "/publicpool", method = RequestMethod.GET)
 	public List<SessionInfo> getPublicPoolSessions(
-			final HttpServletResponse response
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		List<SessionInfo> sessions = sessionService.getPublicPoolSessionsInfo();
 
@@ -216,19 +264,28 @@ public class SessionController extends PaginationController {
 		return sessions;
 	}
 
+	@ApiOperation(value = "imports a session",
+				  nickname = "importSession",
+				  notes = "Request encoding: none, Repsonse structure: Session[], encoding-type: application/json")
 	@RequestMapping(value = "/import", method = RequestMethod.POST)
 	public SessionInfo importSession(
-			@RequestBody final ImportExportSession session,
-			final HttpServletResponse response
+			@ApiParam(value = "current session", required = true) @RequestBody final ImportExportSession session,
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		return sessionService.importSession(session);
 	}
 
+	@ApiOperation(value = "Locks or unlocks a Session",
+				  nickname = "lockSession",
+				  notes = "Request encoding: Query string, Repsonse structure: Session, encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 404, message = "Not Found - The requested resource could not be found but may be available again in the future")
+	})
 	@RequestMapping(value = "/{sessionkey}/lock", method = RequestMethod.POST)
 	public Session lockSession(
-			@PathVariable final String sessionkey,
-			@RequestParam(required = false) final Boolean lock,
-			final HttpServletResponse response
+			@ApiParam(value = "session-key from current session", required = true) @PathVariable final String sessionkey,
+			@ApiParam(value="lock", required=true) @RequestParam(required = false) final Boolean lock,
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		if (lock != null) {
 			return sessionService.setActive(sessionkey, lock);
@@ -237,39 +294,51 @@ public class SessionController extends PaginationController {
 		return null;
 	}
 
+	@ApiOperation(value = "retrieves a value for the learning progress",
+				  nickname = "learningProgress",
+				  notes = "Request encoding: none, Repsonse structure: LearningProgressValues[], encoding-type: application/json")
 	@RequestMapping(value = "/{sessionkey}/learningprogress", method = RequestMethod.GET)
 	public LearningProgressValues learningProgress(
-			@PathVariable final String sessionkey,
-			@RequestParam(value = "type", defaultValue = "questions") final String progressType,
-			@RequestParam(value = "questionVariant", required = false) final String questionVariant,
-			final HttpServletResponse response
+			@ApiParam(value = "session-key from current session", required = true) @PathVariable final String sessionkey,
+			@ApiParam(value = "progress type", required = true) @RequestParam(value = "type", defaultValue = "questions") final String progressType,
+			@ApiParam(value = "question variant", required = true) @RequestParam(value = "questionVariant", required = false) final String questionVariant,
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		return sessionService.getLearningProgress(sessionkey, progressType, questionVariant);
 	}
 
+	@ApiOperation(value = "retrieves a value for the learning progress for the current user",
+				  nickname = "myLearningProgress",
+				  notes = "Request encoding: none, Repsonse structure: LearningProgressValues, encoding-type: application/json")
 	@RequestMapping(value = "/{sessionkey}/mylearningprogress", method = RequestMethod.GET)
 	public LearningProgressValues myLearningProgress(
-			@PathVariable final String sessionkey,
+			@ApiParam(value = "session-key from current session", required = true) @PathVariable final String sessionkey,
 			@RequestParam(value = "type", defaultValue = "questions") final String progressType,
 			@RequestParam(value = "questionVariant", required = false) final String questionVariant,
-			final HttpServletResponse response
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		return sessionService.getMyLearningProgress(sessionkey, progressType, questionVariant);
 	}
 
+	@ApiOperation(value = "retrieves all session features",
+				  nickname = "sessionFeatures",
+				  notes = "Request encoding: none, Repsonse structure: SessionFeature, encoding-type: application/json")
 	@RequestMapping(value = "/{sessionkey}/features", method = RequestMethod.GET)
 	public SessionFeature sessionFeatures(
-			@PathVariable final String sessionkey,
-			final HttpServletResponse response
+			@ApiParam(value = "session-key from current session", required = true) @PathVariable final String sessionkey,
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		return sessionService.getSessionFeatures(sessionkey);
 	}
 
 	@RequestMapping(value = "/{sessionkey}/features", method = RequestMethod.PUT)
+	@ApiOperation(value = "change all session features",
+				  nickname = "changeSessionFeatures",
+				  notes = "Request encoding: none, Repsonse structure: SessionFeature, encoding-type: application/json")
 	public SessionFeature changeSessionFeatures(
-			@PathVariable final String sessionkey,
-			@RequestBody final SessionFeature features,
-			final HttpServletResponse response
+			@ApiParam(value = "session-key from current session", required = true) @PathVariable final String sessionkey,
+			@ApiParam(value = "session feature", required = true) @RequestBody final SessionFeature features,
+			@ApiParam(value = "http servlet response", required = true) final HttpServletResponse response
 			) {
 		return sessionService.changeSessionFeatures(sessionkey, features);
 	}
diff --git a/src/main/java/de/thm/arsnova/controller/SocketController.java b/src/main/java/de/thm/arsnova/controller/SocketController.java
index 64a58710ff65f74e4a79c52d916c09a672bb9702..15eea6905864330f09d4873d4aa880d11d1ee6a5 100644
--- a/src/main/java/de/thm/arsnova/controller/SocketController.java
+++ b/src/main/java/de/thm/arsnova/controller/SocketController.java
@@ -32,6 +32,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+import com.wordnik.swagger.annotations.ApiParam;
+import com.wordnik.swagger.annotations.ApiResponse;
+import com.wordnik.swagger.annotations.ApiResponses;
+
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.services.IUserService;
 import de.thm.arsnova.services.UserSessionService;
@@ -42,6 +48,7 @@ import de.thm.arsnova.socket.ARSnovaSocket;
  */
 @RestController
 @RequestMapping("/socket")
+@Api(value = "/socket", description = "the Socket API")
 public class SocketController extends AbstractController {
 
 	@Autowired
@@ -55,8 +62,16 @@ public class SocketController extends AbstractController {
 
 	private static final Logger LOGGER = LoggerFactory.getLogger(SocketController.class);
 
+	@ApiOperation(value = "requested to assign Websocket session",
+				  nickname = "authorize",
+				  notes = "Request encoding: none, Repsonse structure: none, encoding-type: application/json")
+	@ApiResponses(value = {
+		@ApiResponse(code = 204, message = "No Content - successfully processed the request"),
+		@ApiResponse(code = 400, message = "Bad Request - The Api cannot or will not process the request due to something that is perceived to be a client error"),
+		@ApiResponse(code = 403, message = "Forbidden - The request was a valid request, but the Api is refusing to respond to it")
+	})
 	@RequestMapping(method = RequestMethod.POST, value = "/assign")
-	public void authorize(@RequestBody final Map<String, String> sessionMap, final HttpServletResponse response) {
+	public void authorize(@ApiParam(value="sessionMap", required=true) @RequestBody final Map<String, String> sessionMap, @ApiParam(value="response", required=true) final HttpServletResponse response) {
 		String socketid = sessionMap.get("session");
 		if (null == socketid) {
 			LOGGER.debug("Expected property 'session' missing", socketid);
@@ -74,6 +89,9 @@ public class SocketController extends AbstractController {
 		response.setStatus(HttpStatus.NO_CONTENT.value());
 	}
 
+	@ApiOperation(value = "retrieves a socket url",
+				  nickname = "getSocketUrl",
+				  notes = "Request encoding: none, Repsonse structure: none, encoding-type: application/json")
 	@RequestMapping(value = "/url", method = RequestMethod.GET)
 	public String getSocketUrl(final HttpServletRequest request) {
 		StringBuilder url = new StringBuilder();
diff --git a/src/main/java/de/thm/arsnova/controller/StatisticsController.java b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
index 0acfb9d613a77685849d272adb1c799602f06757..ac63bb3c8ce15b55b3725b32858aa16390cae5c8 100644
--- a/src/main/java/de/thm/arsnova/controller/StatisticsController.java
+++ b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
@@ -22,6 +22,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.wordnik.swagger.annotations.Api;
+import com.wordnik.swagger.annotations.ApiOperation;
+
 import de.thm.arsnova.entities.Statistics;
 import de.thm.arsnova.services.IStatisticsService;
 import de.thm.arsnova.web.CacheControl;
@@ -31,11 +34,15 @@ import de.thm.arsnova.web.DeprecatedApi;
  * Allows retrieval of several statistics such as the number of active users.
  */
 @RestController
+@Api(value = "/statistics", description = "the Statistic API")
 public class StatisticsController extends AbstractController {
 
 	@Autowired
 	private IStatisticsService statisticsService;
 
+	@ApiOperation(value = "Retrieves global statistics",
+				  nickname = "getStatistics",
+				  notes = "Request encoding: none, Repsonse structure: none, encoding-type: application/json")
 	@RequestMapping(method = RequestMethod.GET, value = "/statistics")
 	@CacheControl(maxAge = 60, policy = CacheControl.Policy.PUBLIC)
 	public Statistics getStatistics() {