Project

General

Profile

WOCAT Website API » History » Revision 2

Revision 1 (Lukas Vonlanthen, 26 May 2016 10:35) → Revision 2/9 (Lukas Vonlanthen, 26 May 2016 11:41)

h1. WOCAT Website API 

 Old version: https://redmine.cde.unibe.ch/projects/wocat-cms/wiki/WebServicesAuthentificationAddress 

 h2. Requirements: 

 - All requests over encrypted connection (SSL) 
 - All responses as JSON 
 - Authentication for service is needed (eg. token authentication http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication) 
 - Documentation is available (eg. http://django-rest-swagger.readthedocs.io/en/latest/) 


 h2. End points: 

 - Authentication 
  
   /[v1]/authentication 
     Method: POST 
     Data: 
       - username 
       - password 
     Response: 
       - JSON user object if login successful 
       - Response with HTTP status code 401 if login not successful 


 - List of users (with search) 
  
   /[v1]/users 
     Method: GET 
     Query parameters: 
       - name (username or first/lastname) 
     Response: 
       - List of JSON user objects 
         { 
           "users": [ 
             // List of JSON user objects 
           ], 
           "count": 2    // the total count (without limit) 
         } 


 - Details of user 

   /[v1]/users/[id] 
     Method: GET 
     URL parameter: 
       - id 
     Response: 
       - JSON user object if found 
       - Response with HTTP status code 404 if not found 


 - List of institutions 

   /[v1]/institutions 
     Method: GET 
     Response: 
       - List of JSON institution objects 
         { 
           "users": [ 
             // List of JSON institution objects 
           ], 
           "count": 2    // the total count (without limit) 
         } 


 - List of projects 

   /[v1]/projects 
     Method: GET 
     Response: 
       - List of JSON project objects 
         { 
           "users": [ 
             // List of JSON project objects 
           ], 
           "count": 2    // the total count (without limit) 
         } 


 h2. Response formats 

 Format of JSON user object: 

   { 
     "uid": 1055, 
     "username": "kurt.gerber@cde.unibe.ch", 
     "first_name": "Kurt", 
     "last_name": "Gerber", 
     "usergroup": [ 
       { 
         "name": "UNCCD Focal Point", 
         "unccd_country": "CHE" "wocat", 
       } 
     "unccd"  
     ], 
     "address": "Hallerstrasse 10", 
     "zip": "3012", 
     "city": "Bern", 
     "country": "Switzerland", 
     "institution": { 
       "name": "CDE", 
       "id": 1 
     } 
   } 

 Format of JSON institution object: 

   { 
     "name": "CDE", 
     "id": 1 
   } 

 Format of JSON project object: 

   { 
     "name": "DRR project", 
     "id": 1 
   } 


 h2. Open questions: 

 - Can users have more than 1 institution? 
 - SSO with cookie? 
 - Authentication token periodically changing?