# Business Logic Model — Unit 04: API Shell & Integration Dit document beschrijft de startup flow en de orkestratie logica van de shell. ## 1. Startup Orkestratie Flow ```mermaid sequenceDiagram participant Program as Program.cs participant Orc as ModuleOrchestrator participant Core as Core Services participant Mod as Modules (IModule) Program->>Orc: DiscoverModules() Orc-->>Program: List Program->>Core: RegisterCoreServices(Identity, DB, JWT) loop Per Module Program->>Mod: RegisterServices(IServiceCollection) end Program->>Program: Build App Program->>Program: UseExceptionHandler() loop Per Module Program->>Mod: UseModule(IApplicationBuilder) end Program->>Program: UseAuthentication/Authorization() Program->>Program: MapControllers() Program->>Program: Run() ``` ## 2. API Versioning Logic De versioning wordt toegepast via een globale `RoutePrefix` of door gebruik te maken van de `Microsoft.AspNetCore.Mvc.Versioning` library. - **Base Path**: `/api/v1` - **Fallback**: Verzoeken zonder versie-indicator in het pad worden standaard naar v1 gerouteerd. ## 3. Dynamische Swagger Groepering 1. Swagger scan de controllers van alle geladen assemblies. 2. Voor elke controller wordt gekeken naar de assembly waarin deze is gedefinieerd. 3. Indien de assembly toebehoort aan een module (bijv. `SlpModularCms.Modules.Availability`), wordt de module naam als 'Tag' toegevoegd aan alle endpoints van die controller. 4. Swagger UI toont de endpoints gegroepeerd onder deze tags.