# Business Rules — Unit 04: API Shell & Integration Dit document beschrijft de integratie-regels en de orkestratie van de modules. ## 1. Module Discovery (BR-SHELL-01) - **Scanning**: De API Shell scant bij het opstarten naar alle geladen assemblies die voldoen aan het patroon `SlpModularCms.Modules.*`. - **Interface**: Alleen klassen die `IModule` implementeren worden geregistreerd. - **Validatie**: Indien een module niet voldoet aan de eisen (bijv. ontbrekende naam of versie), wordt dit gelogd als een fout en wordt de module niet geladen. ## 2. Dependency Injection & Pipeline (BR-SHELL-02) - **Gecentraliseerde Registratie**: De `ModuleOrchestrator` roept `RegisterServices` aan op alle gevonden modules voordat de applicatie start. - **Middleware Pipeline**: De `ModuleOrchestrator` roept `UseModule` aan om modules de kans te geven hun middleware te registreren in de HTTP pipeline. - **Core First**: Core services (Identity, Logging) worden altijd geregistreerd vóórdat de modules aan de beurt zijn. ## 3. API Versioning & Routing (BR-SHELL-03) - **Gecentraliseerde Prefix**: Alle API endpoints krijgen de prefix `/api/v1/`. - **Afdwingen**: Dit wordt globaal geconfigureerd in de Shell zodat individuele modules hier geen rekening mee hoeven te houden in hun route attributen. ## 4. Swagger Documentatie (BR-SHELL-04) - **Tagging**: De Shell groepeert endpoints automatisch per module op basis van de module naam die in de `IModule` interface is opgegeven. - **Security**: Swagger wordt geconfigureerd om JWT Bearer tokens te ondersteunen voor het testen van beveiligde endpoints. ## 5. Cross-Module Communicatie (BR-SHELL-05) - **Ontkoppeling**: Modules communiceren niet direct met elkaar via projectreferenties. - **Interfaces**: Communicatie verloopt uitsluitend via interfaces die gedefinieerd zijn in `SlpModularCms.Core`.