# Business Rules — Unit 03: Availability Module Dit document beschrijft de functionele logica voor de beschikbaarheidscontrole en de remote shutdown functionaliteit. ## 1. Beschikbaarheidsstatus (BR-AVAIL-01) - **Status Typen**: - `Available`: Het systeem is volledig operationeel. - `Maintenance`: Het systeem is in onderhoud; alleen beheerders hebben toegang. - `Degraded`: Sommige functies zijn beperkt, maar het systeem is in principe bereikbaar. - `NotAvailable`: Het systeem is volledig afgesloten (Remote Shutdown). - **Default (MVP)**: In de MVP versie retourneert de `StubAvailabilityService` altijd `Available`, tenzij handmatig anders geconfigureerd in `appsettings.json`. ## 2. Remote Shutdown Handhaving (BR-AVAIL-02) - **Mechanisme**: Een globale middleware controleert bij elk inkomend request de status via de `IAvailabilityService`. - **Gedrag**: - Als status == `NotAvailable` -> Retourneer `503 Service Unavailable`. - Als status == `Maintenance` -> Blokkeer requests voor reguliere gebruikers; sta alleen toe voor gebruikers met de rol `Owner` of `Administrator`. - **Response**: De response moet het gestandaardiseerde `ApiErrorResponse` formaat gebruiken (U01). ## 3. Publieke Status (BR-AVAIL-03) - **Endpoint**: `GET /api/availability/status` moet voor iedereen bereikbaar zijn (geen authenticatie vereist). - **Informatie**: Het endpoint retourneert de huidige status en een timestamp van de laatste controle. ## 4. Beheerder Bypass (BR-AVAIL-04) - **Rechten**: Gebruikers met de rol `Owner` of `Administrator` kunnen de blokkades van de Availability Middleware omzeilen om onderhoudstaken uit te voeren. - **Identificatie**: De bypass is gebaseerd op de JWT claims (`role`).