WOCAT Website API » History » Revision 5
Revision 4 (Kurt Gerber, 26 May 2016 14:11) → Revision 5/9 (Kurt Gerber, 27 May 2016 15:45)
h1. WOCAT Website API
Old version: https://redmine.cde.unibe.ch/projects/wocat-cms/wiki/WebServicesAuthentificationAddress
h2. Requirements:
- Website with [[wocat_web_users_def|Users/Groups/Institutions]] and Adresses in place
- 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:
h3. Authentication
* URL: @/[v1]/authentication@
* Method: POST
* Data:
> * username
> * password
* Response:
> * JSON user object if logi> successful
> * Response with HTTP status code 401 if login not successful
h3. List of users (with search)
* URL: @/[v1]/users@
* Method: GET
* Query parameters:
> * name (partial email or first/lastname )
* Response:
> * List of JSON user objects
> <pre>
{
"users": [
// List of JSON user objects
],
"count": 2 // the total count (without limit)
}
</pre>
h3. Details of user
* URL: @/[v1]/users/[id]@
* Method: GET
* URL parameter:
> * id
* Response:
> * JSON user object if found
> * Response with HTTP status code 404 if not found
h3. List of institutions
* URL: @/[v1]/institutions@
* Method: GET
* Response:
> * List of JSON institution objects
> <pre>
{
"users": [
// List of JSON institution objects
],
"count": 2 // the total count (without limit)
}
</pre>
h3. List of projects
* URL: /[v1]/projects
* Method: GET
* Response:
> * List of JSON project objects
> <pre>
{
"users": [
// List of JSON project objects
],
"count": 2 // the total count (without limit)
}
</pre>
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"
}
],
"address": "Hallerstrasse 10",
"zip": "3012",
"city": "Bern",
"country": "Switzerland",
"institution": {
"name": "CDE",
"id": 1
}
}
Format of JSON institution object:
{
"name": "CDE",
"country": "CHE",
"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?