72 lines
2 KiB
Markdown
72 lines
2 KiB
Markdown
# Endorsement
|
|
|
|
Zoals besproken op de eerste bestuursvergadering.
|
|
|
|
! Beware: ux is nog verschrikkelijk lelijk, functioneel werkt het wel
|
|
|
|
## Endpoints
|
|
|
|
### Geen authenticatie
|
|
|
|
- `/users`: Overzicht van alle users (default)
|
|
- `/users/<username>`: Achievements van de user `username`
|
|
- `/login` en `/logout`: Laat de user aan- en afmelden
|
|
- `/achievement/<id>`: Een specifieke achievement
|
|
|
|
### Enkel bereikbaar na aanmelden
|
|
|
|
- `/users/<username>/addachievement?name=XYZ`: Maakt een nieuw achievement aan bij `username` met naam `XYZ` en laat de ingelogde persoon endorsen
|
|
- `/achievement/<id>/endorse`: Voegt de ingelogde persoon toe aan `endorsed_by` van achievement `id`
|
|
- `/achievement/<id>/unendorse`: Verwijdert de ingelogde persoon van `endorsed_by` van achievement `id`
|
|
|
|
## DB model
|
|
|
|
### User
|
|
|
|
| name | type | nullable | uniek | beschrijving |
|
|
|--------|------------|----------|-------|--------------|
|
|
| **id** | String(80) | False | True | de username |
|
|
|
|
### Achievement
|
|
|
|
| name | type | nullable | uniek | beschrijving |
|
|
|-------------|---------------|----------|-------|----------------------------------|
|
|
| **id** | Integer | False | True | unieke id |
|
|
| name | String(128) | False | False | beschrijving van de achievement |
|
|
| achieved_by | FK -> user.id | False | False | wie de achievement gehaald heeft |
|
|
|
|
### Endorses
|
|
|
|
Relatie tussen `User` en `Achievement`
|
|
|
|
## API
|
|
|
|
### /api/users
|
|
|
|
Returnt een lijst van strings (usernames)
|
|
|
|
### /api/achievements
|
|
|
|
Return een lijst van Achievement-objecten
|
|
|
|
Achievement-object:
|
|
```JSON
|
|
{
|
|
id: number -> Unieke id
|
|
name: String -> Naam van het achievement
|
|
endorsed_by: [String] -> Lijst van User-ids die deze achievement endorsen
|
|
achieved_by: String -> User-id van de persoon die dit achievement gehaald heeft
|
|
}
|
|
```
|
|
|
|
### /api/all
|
|
|
|
Returnt een lijst van User-objecten
|
|
|
|
User-object
|
|
```JSON
|
|
{
|
|
id: String -> Username
|
|
achievement: [Achievement] -> Lijst met achievements van deze persoon
|
|
}
|
|
```
|