Ontwerp
Must-have
API
De API wordt gebouwd met OpenAPI, specifiek de NuGet package Microsoft.Azure.Functions.Worker.Extensions.OpenApi. Hiermee kan ik gemakkelijk nieuwe endpoints maken, en het sluit direct aan met Azure Functions.

De volgende endpoints worden gerealiseerd:
- /programmes
- /courses
- /organisations
Per endpoint worden minimaal de verplichte velden gebruikt.
Een endpoint ziet er ongeveer zo uit:
[Function("GetOrganisations")]
[Authorize("Reader")]
public async Task<HttpResponseData> GetOrganisations() { }
JWT (OAuth2)
Om ervoor te zorgen dat niet iedereen zomaar de API kan gebruiken en om rechten te kunnen beheren, wordt gebruik gemaakt van JWT tokens samen met OAuth2.
Via Azure kan een gebruiker of applicatie een JWT token aanvragen met behulp van een Client ID en Client Secret. In de token zitten vervolgens rollen opgeslagen die later gebruikt worden voor autorisatie binnen de API.
Bijvoorbeeld:
- ReadWrite
- Read
De rollen worden gecontroleerd via een [Authorize] attribuut boven de Azure Function.
Secrets zoals:
- Client Secret
- Connection Strings
- API keys
worden opgeslagen binnen Azure en niet hardcoded in de applicatie.

Should-have
Om ervoor te zorgen dat iedereen weet hoe de OOAPI werkt, zal ik documentatie bijhouden via Azure DevOps. Dit is waar de Wiki van het HIP staat. Ik zal niet alleen opschrijven wat ik allemaal al gedaan heb, maar ook wat er nog gedaan moet worden.
