Project

General

Profile

Web Services Definition » History » Version 39

Kurt Gerber, 09 Jan 2020 20:58

1 10 Kurt Gerber
h1. API / Web Services Requirements
2 2 Kurt Gerber
3
h2. Request services
4 11 Kurt Gerber
5 1 Kurt Gerber
The existing API is documented here: https://qcat.readthedocs.io/en/latest/api/docs.html
6
7 12 Kurt Gerber
h3. Required missing request services:
8 10 Kurt Gerber
9 12 Kurt Gerber
* 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/
10 10 Kurt Gerber
11 30 Sebastian Manger
1.  Whithout the 'edition' endpoint, it should respond with an array of available editions.
12 10 Kurt Gerber
13 30 Sebastian Manger
*Endpoint:*  @/api/v2/configuration/technologies/@
14 1 Kurt Gerber
15 30 Sebastian Manger
*Allowed method:*  @GET@
16 1 Kurt Gerber
17 30 Sebastian Manger
*Request Header:*  
18
* @Authorization: Token AUTH_TOKEN@
19
*  @Accept: application/json@ or @Accept: application/xml@
20
*  @Content-Type: application/json@ or @Content-Type: application/xml@
21 1 Kurt Gerber
22 30 Sebastian Manger
*Response:*  List of editions for given configuration, e.g.
23
* @ {"editions": ["2018", "2006"] @
24 1 Kurt Gerber
25
26 30 Sebastian Manger
2. Without the specific configuration endpoint (like 'technologies'), the response should be an array of available configurations. 
27 1 Kurt Gerber
28
29 30 Sebastian Manger
*Endpoint:*  @/api/v2/configuration/@
30 1 Kurt Gerber
31 30 Sebastian Manger
*Allowed method:*  @GET@
32 1 Kurt Gerber
33 30 Sebastian Manger
*Request Header:*  
34
* @Authorization: Token AUTH_TOKEN@
35
*  @Accept: application/json@ or @Accept: application/xml@
36
*  @Content-Type: application/json@ or @Content-Type: application/xml@
37 16 Kurt Gerber
38 30 Sebastian Manger
*Response:*  List of configurations, e.g.
39
* @ {"configurations": ["technologies", "approaches", "unccd"] @
40 17 Kurt Gerber
41 30 Sebastian Manger
h2. Requirements for services to add / update cases
42 15 Kurt Gerber
43 30 Sebastian Manger
The following new webservice endpoints must be developed.
44 19 Kurt Gerber
45 30 Sebastian Manger
h3.  1.  Authentification endpoint
46 36 Kurt Gerber
47 35 Kurt Gerber
* See the following page for further specifications: [[API Authentification ]]
48 30 Sebastian Manger
This needs a new technical concept. Goals:
49 15 Kurt Gerber
50 30 Sebastian Manger
* Existing authentication must still work (without need to refresh the token), but only for "non-app" requests
51
* Requests from the "app" must periodically refresh the authentication
52
* For all requests from the app, the header "User-Agent: app" (or something similar) must be set.
53 1 Kurt Gerber
54 33 Kurt Gerber
 Current idea: provide a new authentication backend; skip existing authentication for requests from the app based on some POST flag.
55 34 Kurt Gerber
56 33 Kurt Gerber
57 32 Kurt Gerber
58 1 Kurt Gerber
h3. 2. Endpoint to create new case
59 17 Kurt Gerber
60 14 Kurt Gerber
61 17 Kurt Gerber
*Endpoint:*  @/api/v2/en/questionnaires/<configuration>/<edition>/create@
62 1 Kurt Gerber
63 18 Kurt Gerber
*Allowed method:*  @POST@
64 17 Kurt Gerber
65 27 Kurt Gerber
*POST data:* a valid questionnaire based on the corresponding "configuration template":https://qcat.readthedocs.io/en/latest/api/v2.html#structure-of-configuration
66 17 Kurt Gerber
67 1 Kurt Gerber
*Request Header:*  
68 19 Kurt Gerber
* @Authorization: Token AUTH_TOKEN@
69
*  @usertoken:  <usertoken>@
70
*  @Accept: application/json@ or @Accept: application/xml@
71
*  @Content-Type: application/json@ or @Content-Type: application/xml@
72
73
74
*Response:*
75 20 Kurt Gerber
<pre><code class="json">
76 19 Kurt Gerber
{"success":"true",
77 20 Kurt Gerber
 "code": "technologies_4534"
78 22 Kurt Gerber
}
79 20 Kurt Gerber
</code></pre>
80
81
82
h3. 3.  image/file upload
83
84
This should be handled the same as already done the ui version.
85
86
Adding an image uploads it directly with POST  to https://qcat.wocat.net/en/upload
87
88
As response it gets a JSON like this:
89
<pre><code class="json">
90
{
91
    "success": true,
92
    "uid": "cfb23a06-385a-47c5-8a94-83cae1fd90b7",
93
    "interchange": [
94
        "[/upload/9d/a/9da8b521-7130-48df-ba31-549016a748e5.jpg, (default)]",
95
        "[/upload/0a/3/0a3fea13-1485-4ec8-92ee-351eef561d2d.jpg, (small)]",
96
        "[/upload/17/0/170251f9-a9ea-4945-a714-0beaebb7c750.jpg, (medium)]",
97 19 Kurt Gerber
        "[/upload/cf/b/cfb23a06-385a-47c5-8a94-83cae1fd90b7.jpg, (large)]"
98 1 Kurt Gerber
    ],
99
    "url": "/upload/cf/b/cfb23a06-385a-47c5-8a94-83cae1fd90b7.jpg"
100
}
101
</code></pre>
102 25 Kurt Gerber
103
The value of the key "uid" is what is then really stored in the 'image' key field of the corresponding questionnaire.
104
105
106
h3. 4. Endpoint to edit a case
107
108 37 Kurt Gerber
*Endpoint:*  @/api/v2/en/questionnaires/{configuration}/{edition}/{identifier}/@
109 1 Kurt Gerber
110 38 Kurt Gerber
* *This endpoint exits already*  
111
* Downloading last version of  a single case which the respective user is authorised to see% 
112 25 Kurt Gerber
113 27 Kurt Gerber
114 37 Kurt Gerber
115 25 Kurt Gerber
*Request header:*
116
* @Authorization: Token AUTH_TOKEN@
117
*  @usertoken:  <usertoken>@
118
*  @Accept: application/json@ or @Accept: application/xml@
119
*  @Content-Type: application/json@ or @Content-Type: application/xml@
120 1 Kurt Gerber
121 25 Kurt Gerber
*Allowed method:*  @GET, POST@
122
123 1 Kurt Gerber
*GET:*
124
125 37 Kurt Gerber
* Response would be the latest version of  a case
126
127 25 Kurt Gerber
*POST:*
128
129 39 Kurt Gerber
For an adapted locking mechanism see [[API_Authentification_#Case-locking-mechanism|Case-locking mechanism]]
130 37 Kurt Gerber
131 25 Kurt Gerber
*POST data:*  a valid, updated questionnaire based on the corresponding "configuration template":https://qcat.readthedocs.io/en/latest/api/v2.html#structure-of-configuration
132
133 1 Kurt Gerber
*Response:*
134 25 Kurt Gerber
<pre><code class="json">
135
{"success":"true",
136
 "code": "technologies_4534"
137
}
138
</code></pre>
139 37 Kurt Gerber
140 25 Kurt Gerber
141
142
h3. 5. Endpoint to get mydata
143
144
*Endpoint:*  @/api/v2/en/questionnaires/mydata@
145
146 27 Kurt Gerber
*Allowed method:*  @GET@
147 25 Kurt Gerber
148
*Request Header:*  
149
* @Authorization: Token AUTH_TOKEN@
150
*  @usertoken:  <usertoken>@
151 1 Kurt Gerber
*  @Accept: application/json@ or @Accept: application/xml@
152
*  @Content-Type: application/json@ or @Content-Type: application/xml@
153
154
*Response:*  List of public or draft cases of which the user is the compiler