Web Services Definition » History » Revision 36
« Previous |
Revision 36/40
(diff)
| Next »
Kurt Gerber, 09 Jan 2020 19:36
API / Web Services Requirements¶
Request services¶
The existing API is documented here: https://qcat.readthedocs.io/en/latest/api/docs.html
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 respond with an array of available editions.
Endpoint: /api/v2/configuration/technologies/
Allowed method: GET
Authorization: Token AUTH_TOKEN
-
Accept: application/json
orAccept: application/xml
-
Content-Type: application/json
orContent-Type: application/xml
{"editions": ["2018", "2006"]
2. Without the specific configuration endpoint (like 'technologies'), the response should be an array of available configurations.
Endpoint: /api/v2/configuration/
Allowed method: GET
Authorization: Token AUTH_TOKEN
-
Accept: application/json
orAccept: application/xml
-
Content-Type: application/json
orContent-Type: application/xml
{"configurations": ["technologies", "approaches", "unccd"]
Requirements for services to add / update cases¶
The following new webservice endpoints must be developed.
1. Authentification endpoint¶
- See the following page for further specifications: API Authentification
This needs a new technical concept. Goals:
- Existing authentication must still work (without need to refresh the token), but only for "non-app" requests
- Requests from the "app" must periodically refresh the authentication
- For all requests from the app, the header "User-Agent: app" (or something similar) must be set.
Current idea: provide a new authentication backend; skip existing authentication for requests from the app based on some POST flag.
2. Endpoint to create new case¶
Endpoint: /api/v2/en/questionnaires/<configuration>/<edition>/create
Allowed method: POST
POST data: a valid questionnaire based on the corresponding configuration template
Request Header:Authorization: Token AUTH_TOKEN
-
usertoken: <usertoken>
-
Accept: application/json
orAccept: application/xml
-
Content-Type: application/json
orContent-Type: application/xml
Response:
{"success":"true",
"code": "technologies_4534"
}
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:
{
"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"
}
The value of the key "uid" is what is then really stored in the 'image' key field of the corresponding questionnaire.
4. Endpoint to edit a case¶
Endpoint: /api/v2/en/questionnaires/{configuration}/{edition}/edit/{identifier}
- Only the newest version of a case can be edited
- Only if the case is public or in draft mode
Open question: Locking mechanism in the environment of apps going offline has to be discussed
Request header:Authorization: Token AUTH_TOKEN
-
usertoken: <usertoken>
-
Accept: application/json
orAccept: application/xml
-
Content-Type: application/json
orContent-Type: application/xml
Allowed method: GET, POST
- Response would be the case in 'draft mode'
POST:
POST data: a valid, updated questionnaire based on the corresponding configuration template
Response:
{"success":"true",
"code": "technologies_4534"
}
5. Endpoint to get mydata¶
Endpoint: /api/v2/en/questionnaires/mydata
Allowed method: GET
Authorization: Token AUTH_TOKEN
-
usertoken: <usertoken>
-
Accept: application/json
orAccept: application/xml
-
Content-Type: application/json
orContent-Type: application/xml
Response: List of public or draft cases of which the user is the compiler
Updated by Kurt Gerber almost 5 years ago · 36 revisions