API #4

Closed
opened 2021-05-31 17:58:57 +02:00 by weeman · 1 comment
Owner

Für Datenmodell siehe #3.

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:

{
    "username": "peter",
    "password": "asdasd"
}

Antwort:

Status 200

Login hat geklappt

{
	"user": {
        "id": 23,
        "name": "peter"
    },
	"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:

{
    "profile": {}
}

Antwort:

Status 200

Gespeichert, ok

Status 400

Validierung fehlgeschlagen

{
    "messages": {
        "nickname": "Bitte ausfüllen"
    }
}

GET /users/{id}/profile

Endpunkt um ein Profil gezielt nach ID abzurufen.

Antwort:

Status 200

Profil gefunden

{
    "profile": {}
}

GET /users/profiles

Suche nach Profilen mit Query-Parametern:

  • skill[]=23
  • page=1 für die Paginierung
  • page_size=20 Einträge pro Seite

(Liste wird erweitert).

Antwort:

{
   "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:

{
    "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:

{
    "languages": [
        {
            "id": 23,
            "name": "Französisch"
        }
    ]
}

GET /languages/{id}/icon

Icon einer Sprache (weils gut ausschaut).

Für Datenmodell siehe #3. ### 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: ``` { "username": "peter", "password": "asdasd" } ``` Antwort: **Status 200** Login hat geklappt ``` { "user": { "id": 23, "name": "peter" }, "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: ``` { "profile": {} } ``` Antwort: **Status 200** Gespeichert, ok **Status 400** Validierung fehlgeschlagen ``` { "messages": { "nickname": "Bitte ausfüllen" } } ``` #### GET `/users/{id}/profile` Endpunkt um ein Profil gezielt nach ID abzurufen. Antwort: **Status 200** Profil gefunden ``` { "profile": {} } ``` #### GET `/users/profiles` Suche nach Profilen mit Query-Parametern: * `skill[]=23` * `page=1` für die Paginierung * `page_size=20` Einträge pro Seite (Liste wird erweitert). Antwort: ``` { "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: ``` { "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: ``` { "languages": [ { "id": 23, "name": "Französisch" } ] } ``` #### GET `/languages/{id}/icon` Icon einer Sprache (weils gut ausschaut).
weeman added the
enhancement
label 2021-06-07 17:26:51 +02:00
weeman self-assigned this 2021-06-07 17:26:57 +02:00
Author
Owner

Ich denke das ist erstmal erledigt. Weiteres dann in neuen Tickets.

Ich denke das ist erstmal erledigt. Weiteres dann in neuen Tickets.
Sign in to join this conversation.
No description provided.