forked from kompetenzinventar/ki-doku
added overview rest API
This commit is contained in:
parent
d1cd8bf349
commit
58d0657657
@ -34,6 +34,9 @@ Technisch
|
|||||||
Systemkontext
|
Systemkontext
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
Systemkontext Backend
|
||||||
|
*********************
|
||||||
|
|
||||||
.. uml:: systemcontext.plantuml.txt
|
.. uml:: systemcontext.plantuml.txt
|
||||||
|
|
||||||
Use cases
|
Use cases
|
||||||
@ -50,3 +53,193 @@ Datenmodell
|
|||||||
|
|
||||||
.. uml:: erdmodel.plantuml.txt
|
.. uml:: erdmodel.plantuml.txt
|
||||||
|
|
||||||
|
Überblick Rest API
|
||||||
|
==================
|
||||||
|
|
||||||
|
Authentifizierung
|
||||||
|
*****************
|
||||||
|
|
||||||
|
HTTP Bearer Token. Wird vom Backend verwaltet. Es gibt eine konfigurierbare, maximale Gültigkeit für einen Token.
|
||||||
|
|
||||||
|
Allgemeine Antworten:
|
||||||
|
|
||||||
|
* 401: Anfrage ohne Token
|
||||||
|
* 403: Token abgelaufen oder ungültig
|
||||||
|
|
||||||
|
Authorisierung
|
||||||
|
**************
|
||||||
|
|
||||||
|
* Zugriff nur mit Login
|
||||||
|
* Jeder eingloggte Benutzer darf alles sehen
|
||||||
|
* Ein Benutzer darf nur sein eigenes Profil bearbeiten
|
||||||
|
|
||||||
|
Endpunkte
|
||||||
|
*****************
|
||||||
|
|
||||||
|
POST `/users/login`
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Hiermit kann sich ein Benutzer anmelden. Der Endpunkt authentifiziert gegen LDAP.
|
||||||
|
|
||||||
|
Anfrage:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
:linenos:
|
||||||
|
|
||||||
|
{
|
||||||
|
"username": "peter",
|
||||||
|
"password": "asdasd"
|
||||||
|
}
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
**Status 200**
|
||||||
|
|
||||||
|
Login hat geklappt
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"token": "aSDASDADASDASD"
|
||||||
|
}
|
||||||
|
|
||||||
|
**Status 403**
|
||||||
|
|
||||||
|
Login hat nicht geklappt. Grund ist Benutzer existiert nicht oder Passwort war falsch. Kein weiterer Text über die API wegen Sicherheit.
|
||||||
|
|
||||||
|
DELETE `/users/login`
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Markiert den zur Request Authentifizierung verwendeten Token als nicht mehr gültig.
|
||||||
|
|
||||||
|
POST `/users/profile`
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Speichert ein Profil ab. Übertragene Daten entsprechen #3 im JSON Format.
|
||||||
|
|
||||||
|
Anfrage:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"profile": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
|
||||||
|
**Status 200**
|
||||||
|
|
||||||
|
Gespeichert, ok
|
||||||
|
|
||||||
|
**Status 400**
|
||||||
|
|
||||||
|
Validierung fehlgeschlagen
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"messages": {
|
||||||
|
"nickname": "Bitte ausfüllen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GET `/users/{id}/profile`
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Endpunkt um ein Profil gezielt nach ID abzurufen.
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
|
||||||
|
|
||||||
|
**Status 200**
|
||||||
|
|
||||||
|
Profil gefunden
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"profile": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
GET `/users/profiles`
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Suche nach Profilen mit Query-Parametern:
|
||||||
|
|
||||||
|
* `skill[]=PHP`
|
||||||
|
* `page=1` für die Paginierung
|
||||||
|
* `page_size=20` Einträge pro Seite
|
||||||
|
|
||||||
|
(Liste wird erweitert).
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"total": 23,
|
||||||
|
"profiles": []
|
||||||
|
}
|
||||||
|
|
||||||
|
* `total` Gesamtanzahl der passenden Profile
|
||||||
|
* `profils` Liste mit Profilen
|
||||||
|
|
||||||
|
GET `/skills`
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Hier können die auswählbaren Fähigkeiten inkl. Autovervollständigung abgerufen werden sowie "Ich Suche".
|
||||||
|
|
||||||
|
* `search=an`
|
||||||
|
* Es werden 10 Einträge zurückgegeben
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"skills": [
|
||||||
|
{
|
||||||
|
"id": 23,
|
||||||
|
"name": "Angular"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 42,
|
||||||
|
"name": "Anforderungs-Management"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GET `/skills/{id}/icon`
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Icon einer Fähigkeit (weils gut ausschaut).
|
||||||
|
|
||||||
|
GET `/languages`
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Abruf der Sprachen.
|
||||||
|
|
||||||
|
* `search=fra`
|
||||||
|
* Es werden 10 Einträge zurückgegeben
|
||||||
|
|
||||||
|
Antwort:
|
||||||
|
|
||||||
|
.. code-block:: json
|
||||||
|
|
||||||
|
{
|
||||||
|
"languages": [
|
||||||
|
{
|
||||||
|
"id": 23,
|
||||||
|
"name": "Französisch"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
GET `/languages/{id}/icon`
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Icon einer Sprache (weils gut ausschaut).
|
||||||
|
Loading…
Reference in New Issue
Block a user