AutoMate Technisch Help

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

IAM

Identity en access management, employee sync, HR integratie

Workflows

Workflow definities en executie (v2)

UserTypes

User type templates en organisatie attributen

Branding

Email signatures, Teams branding, CDN assets

Provisions

Device en user provisioning

Main

Kernfunctionaliteit: tenants, users, locks

Common

Gedeelde utilities: Hangfire, health checks, KeyVault

FastEndpoints wordt geconfigureerd om alleen assemblies te laden die beginnen met AutoMate.API:

builder.Services.AddFastEndpoints(options => o => { o.AssemblyFilter = a => { var fullName = a.FullName; return fullName != null && fullName.StartsWith("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:

  1. Slaat anonymous endpoints over (endpoints met IAllowAnonymous metadata)

  2. Extraheert de tenant ID uit de x-tenant-id request header, met fallback op de tenantid claim uit het JWT token (voor de /useroles route)

  3. Valideert dat de tenant ID aanwezig is en een geldig GUID is

  4. Controleert bij cross-tenant access of de caller een MSP-tenant is en de Automate365.Customers.ReadWrite rol heeft

  5. Roept IMultiTenantService.SetTenantId() aan om de tenant beschikbaar te stellen aan downstream handlers

  6. Pusht TenantId naar de Serilog LogContext voor gestructureerde logging

UserContextGuard (Order.Before)

De UserContextGuard processor (API/Src/AutoMate.API/Processors/UserContextGuardProcessor.cs) extraheert user context uit het JWT:

  1. Haalt de Object ID (OID) op uit standaard JWT claim types

  2. Haalt de username op via UPN, preferred_username, email of name claim

  3. Roept IUserContextService.SetUser() aan

  4. Pusht UserId en UserName naar de Serilog LogContext

  5. Logt elk inkomend request met user en request details

app.UseFastEndpoints(c => { c.Endpoints.Configurator = ep => { ep.PreProcessor<TenantGuard>(order: Order.Before); ep.PreProcessor<UserContextGuard>(order: Order.Before); }; c.Endpoints.ShortNames = true; c.Errors.UseProblemDetails(); });

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:ClientId en Hangfire:Entra:ClientSecret

  • Autorisatie: HangfireDashboardAuthorizationFilter

  • Callback 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-daily

0 1 * * *

IAM metrics genereren (dagelijks 01:00)

iam-metrics-monthly

0 5 1 * *

IAM metrics genereren (maandelijks 05:00)

iam-sync-shared-mailboxes-4h

0 */4 * * *

Gedeelde mailboxen synchroniseren

tenant-sync-info-hourly

0 */1 * * *

Tenant informatie synchroniseren

devices-sync-autopilot-hourly

0 */1 * * *

AutoPilot devices synchroniseren

iam-employee-schedule-dispatcher-15m

*/15 * * * *

HR sync schedule dispatcher

iam-employee-cancel-failed-jobs-after-retries-exhausted-30m

*/30 * * * *

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.

# Bouwen van de API genereert automatisch de client dotnet build API/Src/AutoMate.API/AutoMate.API.csproj

Health Checks

De API heeft drie health check endpoints:

Endpoint

Check

Tags

GET /health/basic

HangfireBasicHealthCheck

basic

GET /health/hangfire

HangfireHealthCheck

GET /health/graph

GraphHealthCheck

SignalR Hubs

De API host twee SignalR hubs voor realtime communicatie:

  • /hubs/locksLockHub voor distributed lock events

  • /hubs/workflow-executionsWorkflowExecutionsHub voor workflow status updates

Last modified: 24 March 2026