diff --git a/src/main/java/org/hbp/mip/MIPApplication.java b/src/main/java/org/hbp/mip/MIPApplication.java
index 3de9d687036ae7e66c665d69dcdb1ef4dc9b2812..ecb36651d5909472485004d2e33df0ea39b0dc53 100644
--- a/src/main/java/org/hbp/mip/MIPApplication.java
+++ b/src/main/java/org/hbp/mip/MIPApplication.java
@@ -22,6 +22,7 @@ package org.hbp.mip;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import io.swagger.annotations.*;
 import org.hbp.mip.model.*;
 import org.hibernate.Session;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +34,7 @@ import org.springframework.boot.context.embedded.FilterRegistrationBean;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.core.Authentication;
@@ -71,6 +73,8 @@ import java.util.List;
 @SpringBootApplication
 @RestController
 @EnableOAuth2Client
+@Api(value = "/", description = "MIP API")
+@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringMVCServerCodegen", date = "2016-01-06T09:32:22.266Z")
 public class MIPApplication extends WebSecurityConfigurerAdapter {
 
     @Autowired
@@ -94,133 +98,294 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
         return principal;
     }
 
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        // @formatter:off
+        http.antMatcher("/**")
+                .authorizeRequests()
+                .antMatchers("/", "/frontend/**", "/webjars/**").permitAll()
+                .anyRequest().authenticated()
+                .and().exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/"))
+                .and().logout().logoutSuccessUrl("/").permitAll()
+                .and().csrf().csrfTokenRepository(csrfTokenRepository())
+                .and().addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
+                .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
+        // @formatter:on
+    }
+
+    public static void main(String[] args) {
+        SpringApplication.run(MIPApplication.class, args);
+    }
+
+    @Bean
+    public FilterRegistrationBean oauth2ClientFilterRegistration(
+            OAuth2ClientContextFilter filter) {
+        FilterRegistrationBean registration = new FilterRegistrationBean();
+        registration.setFilter(filter);
+        registration.setOrder(-100);
+        return registration;
+    }
+
+    private Filter ssoFilter() {
+        OAuth2ClientAuthenticationProcessingFilter hbpFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/hbp");
+        OAuth2RestTemplate hbpTemplate = new OAuth2RestTemplate(hbp(), oauth2ClientContext);
+        hbpFilter.setRestTemplate(hbpTemplate);
+        hbpFilter.setTokenServices(new UserInfoTokenServices(hbpResource().getUserInfoUri(), hbp().getClientId()));
+        return hbpFilter;
+    }
+
+    @Bean
+    @ConfigurationProperties("hbp.client")
+    OAuth2ProtectedResourceDetails hbp() {
+        return new AuthorizationCodeResourceDetails();
+    }
+
+    @Bean
+    @ConfigurationProperties("hbp.resource")
+    ResourceServerProperties hbpResource() {
+        return new ResourceServerProperties();
+    }
+
+    private Filter csrfHeaderFilter() {
+        return new OncePerRequestFilter() {
+            @Override
+            protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
+                                            FilterChain filterChain) throws ServletException, IOException {
+                CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
+                if (csrf != null) {
+                    Cookie cookie = WebUtils.getCookie(request, "XSRF-TOKEN");
+                    String token = csrf.getToken();
+                    if (cookie == null || token != null && !token.equals(cookie.getValue())) {
+                        cookie = new Cookie("XSRF-TOKEN", token);
+                        cookie.setPath("/");
+                        response.addCookie(cookie);
+                    }
+                }
+                filterChain.doFilter(request, response);
+            }
+        };
+    }
+
+    private CsrfTokenRepository csrfTokenRepository() {
+        HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
+        repository.setHeaderName("X-XSRF-TOKEN");
+        return repository;
+    }
+
+    private String getUserInfos() {
+        OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();
+        Authentication userAuthentication = oAuth2Authentication.getUserAuthentication();
+        System.out.println(userAuthentication.getDetails().toString());
+        return userAuthentication.getDetails().toString();
+    }
+
+    private User getUser(Principal principal) {
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        org.hibernate.Query query = session.createQuery("from User where username= :username");
+        query.setString("username", principal.getName());
+        User user = (User) query.uniqueResult();
+        session.getTransaction().commit();
+        if(user == null)
+        {
+            session = HibernateUtil.getSessionFactory().getCurrentSession();
+            session.beginTransaction();
+            user = new User(getUserInfos());
+            session.save(user);
+            session.getTransaction().commit();
+        }
+        return user;
+    }
+
     @RequestMapping(value = "/articles", method = RequestMethod.GET)
     @ResponseBody
-    public List<Article> getArticles(@RequestParam(name = "own", required = false) boolean own, @RequestParam(name = "team", required = false) int team, @RequestParam(name = "valid", required = false) boolean valid, @RequestParam(name = "status", required = false) String status) {
+    @ApiOperation(value = "Get articles", notes = "", response = Article.class, responseContainer = "List")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "Success") })
+    public ResponseEntity<List<Article>> getArticles(@ApiParam(value = "Only ask own articles") @RequestParam(value = "own", required = false) Boolean own,
+                                                     @ApiParam(value = "Only ask results matching status") @RequestParam(value = "status", required = false) String status,
+                                                     @ApiParam(value = "Only ask articles from own team") @RequestParam(value = "team", required = false) Boolean team,
+                                                     @ApiParam(value = "Only ask valid articles") @RequestParam(value = "valid", required = false) Boolean valid
+    ) throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         List<Article> articles = session.createQuery("from Article").list();
         session.getTransaction().commit();
-        return articles;
+        return new ResponseEntity<List<Article>>(HttpStatus.OK).ok(articles);
+    }
+
+    @RequestMapping(value = "/articles", method = RequestMethod.POST)
+    @ApiOperation(value = "Create an article", notes = "", response = Void.class)
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Article created") })
+    public ResponseEntity<Void> addAnArticle(
+            @RequestBody @ApiParam(value = "Article to create" ,required=true ) Article article, Principal principal
+    )
+            throws NotFoundException {
+        User user = getUser(principal);
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        article.setCreatedAt(new Date());
+        if(article.getStatus().equals("published")) {
+            article.setPublishedAt(new Date());
+        }
+        article.setSlug(article.getTitle().toLowerCase());
+        article.setCreatedBy(user);
+        session.save(article);
+        session.getTransaction().commit();
+        return new ResponseEntity<Void>(HttpStatus.OK);
     }
 
     @RequestMapping(value = "/articles/{slug}", method = RequestMethod.GET)
     @ResponseBody
-    public Article getArticle(@PathVariable("slug") String slug) {
+    @ApiOperation(value = "Get an article", notes = "", response = Article.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Found"),
+            @ApiResponse(code = 404, message = "Not found") })
+    public ResponseEntity<Article> getAnArticle(
+            @ApiParam(value = "slug",required=true ) @PathVariable("slug") String slug
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         org.hibernate.Query query = session.createQuery("from Article where slug= :slug");
         query.setString("slug", slug);
         Article article = (Article) query.uniqueResult();
         session.getTransaction().commit();
-        return article;
+        return new ResponseEntity<Article>(HttpStatus.OK).ok(article);
+    }
+
+    @RequestMapping(value = "/articles/{slug}", method = RequestMethod.PUT)
+    @ApiOperation(value = "Update an article", notes = "", response = Void.class)
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Article updated") })
+    public ResponseEntity<Void> updateAnArticle(
+            @ApiParam(value = "slug",required=true ) @PathVariable("slug") String slug,
+            @ApiParam(value = "Article to update" ,required=true ) Article article
+    )
+            throws NotFoundException {
+        //TODO
+        // do some magic!
+        return new ResponseEntity<Void>(HttpStatus.OK);
+    }
+
+    @RequestMapping(value = "/articles/{slug}", method = RequestMethod.DELETE)
+    @ApiOperation(value = "Delete an article", notes = "", response = Void.class)
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Article deleted") })
+    public ResponseEntity<Void> deleteAnArticle(
+            @ApiParam(value = "slug",required=true ) @PathVariable("slug") String slug
+
+    )
+            throws NotFoundException {
+        //TODO
+        // do some magic!
+        return new ResponseEntity<Void>(HttpStatus.OK);
     }
 
     @RequestMapping(value = "/datasets/{code}", method = RequestMethod.GET)
     @ResponseBody
-    public Dataset getDatasets(@PathVariable("code") String code) {
+    @ApiOperation(value = "Get a dataset", notes = "", response = Dataset.class)
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
+    public ResponseEntity<Dataset> getADataset(
+            @ApiParam(value = "code",required=true ) @PathVariable("code") String code
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         org.hibernate.Query query = session.createQuery("from Dataset where code= :code");
         query.setString("code", code);
         Dataset ds = (Dataset) query.uniqueResult();
         session.getTransaction().commit();
-        return ds;
+        return new ResponseEntity<Dataset>(HttpStatus.OK).ok(ds);
     }
 
     @RequestMapping(value = "/models", method = RequestMethod.GET)
     @ResponseBody
-    public List<Model> getModels() {
+    @ApiOperation(value = "Get models", notes = "", response = Model.class, responseContainer = "List")
+    @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") })
+    public ResponseEntity<List<Model>> getModels(@ApiParam(value = "Max number of results") @RequestParam(value = "limit", required = false) Integer limit,
+                                                 @ApiParam(value = "Only ask own models") @RequestParam(value = "own", required = false) Boolean own,
+                                                 @ApiParam(value = "Only ask models from own team") @RequestParam(value = "team", required = false) Boolean team,
+                                                 @ApiParam(value = "Only ask valid models") @RequestParam(value = "valid", required = false) Boolean valid
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         List<Model> models = session.createQuery("from Model").list();
         session.getTransaction().commit();
-        return models;
-    }
-
-    @RequestMapping(value = "/models/{slug}", method = RequestMethod.GET)
-    @ResponseBody
-    public Model getModel(@PathVariable("slug") String slug) {
-        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-        session.beginTransaction();
-        org.hibernate.Query query = session.createQuery("from Model where slug= :slug");
-        query.setString("slug", slug);
-        Model model = (Model) query.uniqueResult();
-        session.getTransaction().commit();
-        return model;
-    }
-
-    @RequestMapping(value = "/articles", method = RequestMethod.POST)
-    @ResponseBody
-    public Article postArticle(@RequestBody Article article, Principal principal) {
-        User user = getUser(principal);
-        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-        session.beginTransaction();
-        article.setCreatedAt(new Date());
-        if(article.getStatus().equals("published")) {
-            article.setPublishedAt(new Date());
-        }
-        article.setSlug(article.getTitle().toLowerCase());
-        article.setCreatedBy(user);
-        session.save(article);
-        session.getTransaction().commit();
-        return article;
+        return new ResponseEntity<List<Model>>(HttpStatus.OK).ok(models);
     }
 
     @RequestMapping(value = "/models", method = RequestMethod.POST)
     @ResponseBody
-    public Model postModel(@RequestBody Model model) {
+    @ApiOperation(value = "Create a model", notes = "", response = Void.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Model created") })
+    public ResponseEntity<Void> addAModel(
+            @RequestBody @ApiParam(value = "Model to create" ,required=true ) Model model
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         model.setCreatedAt(new Date());
         model.setSlug(model.getTitle().toLowerCase());
         session.save(model);
         session.getTransaction().commit();
-        return model;
+        return new ResponseEntity<Void>(HttpStatus.OK);
     }
 
-    @RequestMapping(value = "/models/{slug}/copies", method = RequestMethod.POST)
+    @RequestMapping(value = "/models/{slug}", method = RequestMethod.GET)
     @ResponseBody
-    public Model postModelCopies(@PathVariable("slug") String slug) {
+    @ApiOperation(value = "Get a model", notes = "", response = Model.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Found"),
+            @ApiResponse(code = 404, message = "Not found") })
+    public ResponseEntity<Model> getAModel(
+            @ApiParam(value = "slug",required=true ) @PathVariable("slug") String slug
+
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         org.hibernate.Query query = session.createQuery("from Model where slug= :slug");
         query.setString("slug", slug);
         Model model = (Model) query.uniqueResult();
         session.getTransaction().commit();
-        return model;
-    }
-
-    @RequestMapping(value = "/queries/requests", method = RequestMethod.POST)
-    @ResponseBody
-    public Query postRequest(@RequestBody Query query) {
-        return null;
-    }
-
-    @RequestMapping(value = "/articles/{slug}", method = RequestMethod.PUT)
-    @ResponseStatus(HttpStatus.NO_CONTENT)
-    public void putArticle(@PathVariable("slug") String slug) {
+        return new ResponseEntity<Model>(HttpStatus.OK).ok(model);
     }
 
     @RequestMapping(value = "/models/{slug}", method = RequestMethod.PUT)
     @ResponseBody
-    public Model putModel(@PathVariable("slug") String slug) {
-        return null;
-    }
-
-    @RequestMapping(value = "/articles/{slug}", method = RequestMethod.DELETE)
-    @ResponseStatus(HttpStatus.NO_CONTENT)
-    public void deleteArticle(@PathVariable("slug") String slug) {
+    @ApiOperation(value = "Update a model", notes = "", response = Void.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Model updated") })
+    public ResponseEntity<Void> updateAModel(
+            @ApiParam(value = "slug",required=true ) @PathVariable("slug") String slug,
+            @ApiParam(value = "Model to update" ,required=true ) Model model
+    )
+            throws NotFoundException {
+        // TODO
+        // do some magic!
+        return new ResponseEntity<Void>(HttpStatus.OK);
     }
 
     @RequestMapping(value = "/models/{slug}", method = RequestMethod.DELETE)
-    @ResponseStatus(HttpStatus.NO_CONTENT)
-    public void deleteModel(@PathVariable("slug") String slug, @RequestBody Model model) {
+    @ApiOperation(value = "Delete a model", notes = "", response = Void.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Model deleted") })
+    public ResponseEntity<Void> deleteAModel(
+            @ApiParam(value = "slug",required=true ) @PathVariable("slug") String slug
+    )
+            throws NotFoundException {
+        // TODO
+        // do some magic!
+        return new ResponseEntity<Void>(HttpStatus.OK);
     }
 
     @RequestMapping(value = "/groups")
     @ResponseBody
-    public Group getGroups(){
+    @ApiOperation(value = "Get the root group (containing all subgroups)", notes = "", response = Group.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Success") })
+    public ResponseEntity<Group> getTheRootGroup()
+            throws NotFoundException {
         String rootCode = "root";
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
@@ -228,138 +393,82 @@ public class MIPApplication extends WebSecurityConfigurerAdapter {
         query.setString("code", rootCode);
         Group group = (Group) query.uniqueResult();
         session.getTransaction().commit();
-        return group;
+        return new ResponseEntity<Group>(HttpStatus.OK).ok(group);
     }
 
     @RequestMapping(value = "/variables")
     @ResponseBody
-    public List<Variable> getVariables(){
+    @ApiOperation(value = "Get variables", notes = "", response = Variable.class, responseContainer = "List")
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Success") })
+    public ResponseEntity<List<Variable>> getVariables(@ApiParam(value = "List of groups formatted like : (\"val1\", \"val2\", ...)") @RequestParam(value = "group", required = false) String group,
+                                                       @ApiParam(value = "List of subgroups formatted like : (\"val1\", \"val2\", ...)") @RequestParam(value = "subgroup", required = false) String subgroup,
+                                                       @ApiParam(value = "Boolean value formatted like : (\"0\") or (\"1\") or (\"false\") or (\"true\")") @RequestParam(value = "isVariable", required = false) String isVariable,
+                                                       @ApiParam(value = "Boolean value formatted like : (\"0\") or (\"1\") or (\"false\") or (\"true\")") @RequestParam(value = "isGrouping", required = false) String isGrouping,
+                                                       @ApiParam(value = "Boolean value formatted like : (\"0\") or (\"1\") or (\"false\") or (\"true\")") @RequestParam(value = "isCovariable", required = false) String isCovariable,
+                                                       @ApiParam(value = "Boolean value formatted like : (\"0\") or (\"1\") or (\"false\") or (\"true\")") @RequestParam(value = "isFilter", required = false) String isFilter
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         List<Variable> variables = session.createQuery("from Variable").list();
         session.getTransaction().commit();
-        return variables;
+        return new ResponseEntity<List<Variable>>(HttpStatus.OK).ok(variables);
     }
 
     @RequestMapping(value = "/variables/{code}")
     @ResponseBody
-    public Variable getVariable(@PathVariable("code") String code){
+    @ApiOperation(value = "Get a variable", notes = "", response = Variable.class)
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Found"),
+            @ApiResponse(code = 404, message = "Not found") })
+    public ResponseEntity<Variable> getAVariable(
+            @ApiParam(value = "code ( multiple codes are allowed, separeted by \",\" )",required=true ) @PathVariable("code") String code
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         org.hibernate.Query query = session.createQuery("from Variable where code= :code");
         query.setString("code", code);
         Variable variable = (Variable) query.uniqueResult();
         session.getTransaction().commit();
-        return variable;
+        return new ResponseEntity<Variable>(HttpStatus.OK).ok(variable);
     }
 
     @RequestMapping(value = "/variables/{code}/values")
     @ResponseBody
-    public List<Value> getValues(@PathVariable("code") String code){
+    @ApiOperation(value = "Get values from a variable", notes = "", response = Value.class, responseContainer = "List")
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Found"),
+            @ApiResponse(code = 404, message = "Not found") })
+    public ResponseEntity<List<Value>> getValuesFromAVariable(
+            @ApiParam(value = "code",required=true ) @PathVariable("code") String code,
+            @ApiParam(value = "Pattern to match") @RequestParam(value = "q", required = false) String q
+    )
+            throws NotFoundException {
         Session session = HibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         List<Value> values = session.createQuery("select values from Variable where code= :code").setString("code", code).list();
         session.getTransaction().commit();
-        return values;
+        return new ResponseEntity<List<Value>>(HttpStatus.OK).ok(values);
     }
 
-    @Override
-    protected void configure(HttpSecurity http) throws Exception {
-        // @formatter:off
-        http.antMatcher("/**")
-                .authorizeRequests()
-                .antMatchers("/", "/frontend/**", "/webjars/**").permitAll()
-                .anyRequest().authenticated()
-                .and().exceptionHandling().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/"))
-                .and().logout().logoutSuccessUrl("/").permitAll()
-                .and().csrf().csrfTokenRepository(csrfTokenRepository())
-                .and().addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
-                .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
-        // @formatter:on
-    }
-
-    public static void main(String[] args) {
-        SpringApplication.run(MIPApplication.class, args);
-    }
-
-    @Bean
-    public FilterRegistrationBean oauth2ClientFilterRegistration(
-            OAuth2ClientContextFilter filter) {
-        FilterRegistrationBean registration = new FilterRegistrationBean();
-        registration.setFilter(filter);
-        registration.setOrder(-100);
-        return registration;
-    }
-
-    private Filter ssoFilter() {
-        OAuth2ClientAuthenticationProcessingFilter hbpFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/hbp");
-        OAuth2RestTemplate hbpTemplate = new OAuth2RestTemplate(hbp(), oauth2ClientContext);
-        hbpFilter.setRestTemplate(hbpTemplate);
-        hbpFilter.setTokenServices(new UserInfoTokenServices(hbpResource().getUserInfoUri(), hbp().getClientId()));
-        return hbpFilter;
-    }
-
-    @Bean
-    @ConfigurationProperties("hbp.client")
-    OAuth2ProtectedResourceDetails hbp() {
-        return new AuthorizationCodeResourceDetails();
-    }
-
-    @Bean
-    @ConfigurationProperties("hbp.resource")
-    ResourceServerProperties hbpResource() {
-        return new ResourceServerProperties();
-    }
-
-    private Filter csrfHeaderFilter() {
-        return new OncePerRequestFilter() {
-            @Override
-            protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
-                                            FilterChain filterChain) throws ServletException, IOException {
-                CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName());
-                if (csrf != null) {
-                    Cookie cookie = WebUtils.getCookie(request, "XSRF-TOKEN");
-                    String token = csrf.getToken();
-                    if (cookie == null || token != null && !token.equals(cookie.getValue())) {
-                        cookie = new Cookie("XSRF-TOKEN", token);
-                        cookie.setPath("/");
-                        response.addCookie(cookie);
-                    }
-                }
-                filterChain.doFilter(request, response);
-            }
-        };
-    }
+}
 
-    private CsrfTokenRepository csrfTokenRepository() {
-        HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
-        repository.setHeaderName("X-XSRF-TOKEN");
-        return repository;
+@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringMVCServerCodegen", date = "2016-01-06T09:32:22.266Z")
+class NotFoundException extends ApiException {
+    private int code;
+    public NotFoundException (int code, String msg) {
+        super(code, msg);
+        this.code = code;
     }
+}
 
-    private String getUserInfos() {
-        OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();
-        Authentication userAuthentication = oAuth2Authentication.getUserAuthentication();
-        System.out.println(userAuthentication.getDetails().toString());
-        return userAuthentication.getDetails().toString();
+@javax.annotation.Generated(value = "class io.swagger.codegen.languages.SpringMVCServerCodegen", date = "2016-01-06T09:32:22.266Z")
+class ApiException extends Exception{
+    private int code;
+    public ApiException (int code, String msg) {
+        super(msg);
+        this.code = code;
     }
-
-    private User getUser(Principal principal) {
-        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
-        session.beginTransaction();
-        org.hibernate.Query query = session.createQuery("from User where username= :username");
-        query.setString("username", principal.getName());
-        User user = (User) query.uniqueResult();
-        session.getTransaction().commit();
-        if(user == null)
-        {
-            session = HibernateUtil.getSessionFactory().getCurrentSession();
-            session.beginTransaction();
-            user = new User(getUserInfos());
-            session.save(user);
-            session.getTransaction().commit();
-        }
-        return user;
-    }
-
 }