Project

General

Profile

Web Services Definition » History » Revision 23

Revision 22 (Kurt Gerber, 13 Dec 2018 16:48) → Revision 23/40 (Kurt Gerber, 13 Dec 2018 16:51)

h1. API / Web Services Requirements 

 h2. Request services 

 The existing API is documented here: https://qcat.readthedocs.io/en/latest/api/docs.html 

 h3. Required missing request services: 

 * There is an endpoint to get the configuration for a specific questionnaire and edition:    https://https://qcat.wocat.net/en/api/v2/configuration/technologies/2018/ 

 1.    Whithout the 'edition' endpoint, it should response with an array of available editions. Now it answers with a 'Not found' html page. 

 2. Without the specific configuration endpoint (like 'technologies'), the response should be an array of available configurations.    Now it answers with a 'Not found' html page. 


 h2. Requirements for services to add / update cases 

 The following new webservice endpoints must be developed. 

 h3.1.    Authentification endpoint 

 To upload a case, a user has to authenticate himself. Therefore an authentification endpoint is needed.  

 %{background:#F2D5A0} The existing authorization token serves only as authorization to access the API.  
 The token is application based and always the same for a certain application, independently of the user working with the application.% 

 * The user has to authenticate before any data is uploaded or non-public downloaded. 
 * After a successfull authentification, the server sends a 'sessionid'. This sessionid has to be added to the request header for any subsequent POST request. Should work a bit as on the web UI with the sessionid in the cookie. 
 * LImitations on client side? (to discuss) 


 *Endpoint:*    _/api/v2/user-token/_ 

 *Allowed method:*    _POST_   

 *Post data:* 

 * @username@:    The username of a WOCAT account 
 * @password@: The password of the corresponding WOCAT account 


 *Response:* 
 <pre><code class="json"> 
 {"sessionid":"09249249243729342123ad232dc"} 
 </code></pre> 




 h3. 2. Upload endpoint 


 *Endpoint:*    @/api/v2/en/edit/<configuration>/<edition>@ @/api/v2/create/<configuration>/<edition>@ 

 *Allowed method:*    @POST@ 

 *POST data:* a valid questionnaire based on the corresponding "configuration template":https://qcat.readthedocs.io/en/latest/api/v2.html#structure-of-configuration 

 *Request Header:*   
 * @Authorization: Token AUTH_TOKEN@ 
 *    @sessionid: 6xn26rwsy0r0k2yn5bsoq2qiyssg9mrs@ 
 *    @Accept: application/json@ or @Accept: application/xml@ 
 *    @Content-Type: application/json@ or @Content-Type: application/xml@ 


 *Response:* 
 <pre><code class="json"> 
 {"success":"true", 
  "code": "technologies_4534" 
 } 
 </code></pre> 


 h3. 3.    image/file upload 

 This should be handled the same as already done the ui version. 

 Adding an image uploads it directly with POST    to https://qcat.wocat.net/en/upload 

 As response it gets a JSON like this: 
 <pre><code class="json"> 
 { 
     "success": true, 
     "uid": "cfb23a06-385a-47c5-8a94-83cae1fd90b7", 
     "interchange": [ 
         "[/upload/9d/a/9da8b521-7130-48df-ba31-549016a748e5.jpg, (default)]", 
         "[/upload/0a/3/0a3fea13-1485-4ec8-92ee-351eef561d2d.jpg, (small)]", 
         "[/upload/17/0/170251f9-a9ea-4945-a714-0beaebb7c750.jpg, (medium)]", 
         "[/upload/cf/b/cfb23a06-385a-47c5-8a94-83cae1fd90b7.jpg, (large)]" 
     ], 
     "url": "/upload/cf/b/cfb23a06-385a-47c5-8a94-83cae1fd90b7.jpg" 
 } 
 </code></pre> 

 The value of the key "uid" is what is then really stored in the 'image' key field of the corresponding questionnaire.