# Team 1: API proposal ## Endpoints ### Afkortingen - YA: Yes, all - YO: Yes, own organisation - YU: Yes, own user - YIP: Yes, if permission from admin - N: No - IMed = Interne Medewerker van het MAGDA platform - Admin = Administrator van organisatie - Klant = klant/afnemer - Andere = gebruiker die nog niet gelinkt is met organisatie #### opmerkingen - Super Admin? (= persoon die alles kan zien en doen, voor worst cases als bvb system failure) ### Organisaties - IMed: Toegang tot gebruikers van alle organisaties - Admin: Enkel toegang tot gebruikers van eigen organisaties - Klant/Andere: Enkel toegang tot zichzelf als gebruiker | HTTP method | CRUD | Endpoint | IMed | Admin | Klant | Andere | | ----------- | ------ | ----------- |:----:|:-----:|:-----:|:------:| | GET | Read | `/org` | YA | YO | YO | N | | POST | Create | `/org` | YA | N | N | YU | | GET | Read | `/org/{id}` | YA | YO | YO | YO | | PATCH | Update | `/org/{id}` | YA | YO | N | YO | | DELETE | Delete | `/org/{id}` | YA | YO | N | YO | - Andere maakt organisatie aan, maar heeft geen organisatie op dat moment #### opmerkingen - `[JP]` willen we dat `other` (mogelijks random users) organisaties kunnen maken of enkel IMed? Zit in de CRO vraagskes :P #### Dossiers van organisatie iets van `/org/{id}/dossiers` ? - vooral voor klantgericht gebruik #### Gebruikers van organisatie iets van `/org/{id}/gebruikers` ? #### Machtigingen van organisatie iets van `/org/{id}/machtigingen` ? #### Diensten van organisatie iets van `/org/{id}/diensten` ? #### Pakketten van organisatie iets van `/org/{id}/pakketten` ? ### Gebruikers - IMed: Toegang tot gebruikers van alle organisaties - Admin: Enkel toegang tot gebruikers van eigen organisaties - Klant: Enkel toegang tot zichzelf als gebruiker, kan zichzelf niet verwijderen - Andere: Kan zichzelf verwijderen (want niet meer gelinkt met een organisatie) | HTTP method | CRUD | Endpoint | IMed | Admin | Klant | Andere | | ----------- | ------ | ------------------ |:----:|:-----:|:-----:| :----: | | GET | Read | `/gebruikers` | YA | N | N | N | | POST | Create | `/gebruikers` | YA | N | N | N | | GET | Read | `/gebruikers/{id}` | YA | YO | YU | YU | | PATCH | Update | `/gebruikers/{id}` | YA | YO | YU | YU | | DELETE | Delete | `/gebruikers/{id}` | YA | YO | N | YU | ### Dossier - IMed: Toegang tot dossiers van alle organisaties - Admin: Enkel toegang tot dossiers van eigen organisaties - Klant: Enkel toegang tot dossiers van eigen organisaties, mits permissies van Admin - Andere: Geen toegang tot dossiers, want niet gelinkt met organisatie | HTTP method | CRUD | Endpoint | IMed | Admin | Klant | Andere | | ----------- | ------ | ---------------- |:----:|:-----:|:-----:|:------:| | GET | Read | `/dossiers` | YA | YO | YIP | N | | POST | Create | `/dossiers` | YA | YO | YIP | N | | GET | Read | `/dossiers/{id}` | YA | YO | YIP | N | | PATCH | Update | `/dossiers/{id}` | YA | YO | YIP | N | | DELETE | Delete | `/dossiers/{id}` | YA | YO | YIP | N | #### opmerkingen - `[JP]` zou dit mss niet beter aanvraag genoemd worden? ### Magda-diensten - IMed: Toegang tot alle Magda-diensten - Admin/Klant: Enkel lees-toegang tot het aanbod van Magda-diensten - Andere: Geen toegang | HTTP method | CRUD | Endpoint | IMed | Admin | Klant | Andere | | ----------- | ------ | ---------------- |:----:|:-----:|:-----:|:------:| | GET | Read | `/diensten` | YA | YA | YA | YA | | POST | Create | `/diensten` | YA | N | N | N | | GET | Read | `/diensten/{id}` | YA | YA | YA | YA | | PATCH | Update | `/diensten/{id}` | YA | N | N | N | | DELETE | Delete | `/diensten/{id}` | YA | N | N | N | #### opmerkingen ### Pakket *(MS2)* - IMed: Toegang tot alle Magda-pakketten - Admin/Klant: Enkel lees-toegang tot het aanbod van Magda-pakketten - Andere: Geen toegang | HTTP method | CRUD | Endpoint | IMed | Admin | Klant | Andere | | ----------- | ------ | -------------------- |:----:|:-----:|:-----:|:------:| | GET | Read | `/pakketten` | YA | YA | YA | YA | | POST | Create | `/pakketten` | YA | N | N | N | | GET | Read | `/pakketten/{id}` | YA | YA | YA | YA | | PATCH | Update | `/pakketten/{id}` | YA | N | N | N | | DELETE | Delete | `/pakketten/{id}` | YA | N | N | N | #### opmerkingen - `[JP]` Pakket is nog niet nodig in de API voor milestone 1, dus kan nog veranderen en moet in principe niet in de API (maar mag al vastgelegd worden) ### Machtigingen - IMed: Toegang tot alle Machtigingen - Admin/Klant: Enkel lees-toegang tot het aanbod van Machtigingen - Andere: Geen toegang | HTTP method | CRUD | Endpoint | IMed | Admin | Klant | Andere | | ----------- | ------ | -------------------- |:----:|:-----:|:-----:|:-----:| | GET | Read | `/machtigingen` | YA | YA | YA | N | | POST | Create | `/machtigingen` | YA | N | N | N | | GET | Read | `/machtigingen/{id}` | YA | YA | YA | N | | PATCH | Update | `/machtigingen/{id}` | YA | N | N | N | | DELETE | Delete | `/machtigingen/{id}` | YA | N | N | N | #### opmerkingen ## Andere vereisten * [JWT tokens](https://jwt.io/) voor de authenticatie, makkelijk om rollen toe te voegen en veiliger dan cookies. ([Java JWT library](https://github.com/auth0/java-jwt)) * note, voor milestone 1 nog niet nodig (maar we kunnen het ook al vastleggen dat JWT gebruikt wordt)