AutoMate API — Overzicht
De AutoMate API is gebouwd met FastEndpoints (niet ASP.NET Core MVC of Minimal APIs). Endpoints zijn classes die erven van Endpoint<TRequest, TResponse> of EndpointWithoutRequest<TResponse>. De API maakt gebruik van feature-based organisatie waarbij alle functionaliteit gegroepeerd is per domein.
Feature-based organisatie
Alle features bevinden zich onder API/Src/AutoMate.API/Features/:
Feature | Inhoud |
|---|---|
| Identity en access management, employee sync, HR integratie |
| Workflow definities en executie (v2) |
| User type templates en organisatie attributen |
| Email signatures, Teams branding, CDN assets |
| Device en user provisioning |
| Kernfunctionaliteit: tenants, users, locks |
| Gedeelde utilities: Hangfire, health checks, KeyVault |
FastEndpoints wordt geconfigureerd om alleen assemblies te laden die beginnen met AutoMate.API:
Middleware Pipeline
De API gebruikt een gelaagde middleware pipeline. Volgorde van uitvoering:
1. CorrelationIdMiddleware (vroegst)
Geregistreerd als eerste via app.UseMiddleware<CorrelationIdMiddleware>(). Extraheert de X-Correlation-Id header uit het request. Als de header niet aanwezig is, valt de middleware terug op TraceIdentifier. De correlation ID wordt teruggestuurd in de response header en gepusht naar de Serilog LogContext.
2. Authentication / Authorization
Standaard ASP.NET Core middleware: app.UseAuthentication() en app.UseAuthorization().
3. FastEndpoints Global Pre-Processors
Beide processors zijn geregistreerd via UseFastEndpoints en draaien op elke endpoint aanroep:
TenantGuard (Order.Before)
De TenantGuard processor (API/Src/AutoMate.API/Processors/TenantGuardProcessor.cs) is verantwoordelijk voor tenant validatie:
Slaat anonymous endpoints over (endpoints met
IAllowAnonymousmetadata)Extraheert de tenant ID uit de
x-tenant-idrequest header, met fallback op detenantidclaim uit het JWT token (voor de/userolesroute)Valideert dat de tenant ID aanwezig is en een geldig GUID is
Controleert bij cross-tenant access of de caller een MSP-tenant is en de
Automate365.Customers.ReadWriterol heeftRoept
IMultiTenantService.SetTenantId()aan om de tenant beschikbaar te stellen aan downstream handlersPusht
TenantIdnaar de SerilogLogContextvoor gestructureerde logging
UserContextGuard (Order.Before)
De UserContextGuard processor (API/Src/AutoMate.API/Processors/UserContextGuardProcessor.cs) extraheert user context uit het JWT:
Haalt de Object ID (OID) op uit standaard JWT claim types
Haalt de username op via UPN,
preferred_username, email of name claimRoept
IUserContextService.SetUser()aanPusht
UserIdenUserNamenaar de SerilogLogContextLogt elk inkomend request met user en request details
4. Serilog Request Logging
app.UseSerilogRequestLogging() logt HTTP request/response paren inclusief statuscode, duur en pad. Dit is geregistreerd na de FastEndpoints middleware.
Hangfire Dashboard
De Hangfire job dashboard is beschikbaar op /jobs en is beveiligd via Entra ID OIDC authenticatie:
Authenticatieschema:
DashboardCookie+DashboardOidc(OpenID Connect)Configuratie:
Hangfire:Entra:ClientIdenHangfire:Entra:ClientSecretAutorisatie:
HangfireDashboardAuthorizationFilterCallback route:
/signin-oidc-dashboard
De dashboard is alleen beschikbaar wanneer een JobsDb connection string geconfigureerd is.
Terugkerende jobs (UTC tijdzone):
Job | Schedule | Doel |
|---|---|---|
|
| IAM metrics genereren (dagelijks 01:00) |
|
| IAM metrics genereren (maandelijks 05:00) |
|
| Gedeelde mailboxen synchroniseren |
|
| Tenant informatie synchroniseren |
|
| AutoPilot devices synchroniseren |
|
| HR sync schedule dispatcher |
|
| Gefaalde jobs annuleren na retries |
API Documentatie
Scalar API Reference is beschikbaar op /scalar/v1 in development omgevingen. De Scalar interface ondersteunt interactief testen via de Entra ID Implicit Flow en toont alle endpoints met request/response schemas.
De OpenAPI JSON is beschikbaar op /openapi/{documentName}.json.
API Client
De AutoMate.API.Client (API/Src/AutoMate.API.Client/) wordt automatisch gegenereerd bij het builden van de API via Kiota en FastEndpoints client generatie. Bestanden in dit project mogen niet handmatig gewijzigd worden — ze worden overschreven bij de volgende build.
Health Checks
De API heeft drie health check endpoints:
Endpoint | Check | Tags |
|---|---|---|
|
|
|
|
| — |
|
| — |
SignalR Hubs
De API host twee SignalR hubs voor realtime communicatie:
/hubs/locks—LockHubvoor distributed lock events/hubs/workflow-executions—WorkflowExecutionsHubvoor workflow status updates