# 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/`: Achievements van de user `username` - `/login` en `/logout`: Laat de user aan- en afmelden - `/achievement/`: Een specifieke achievement ### Enkel bereikbaar na aanmelden - `/users//addachievement?name=XYZ`: Maakt een nieuw achievement aan bij `username` met naam `XYZ` en laat de ingelogde persoon endorsen - `/achievement//endorse`: Voegt de ingelogde persoon toe aan `endorsed_by` van achievement `id` - `/achievement//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 } ```