API-first architectuur
Eén backend, vele consumenten.
Geen losse applicatie maar een centraal wind-asset-platform. Portaal, mobiel, SCADA, Power BI en AI praten allemaal tegen dezelfde gescopede, multi-tenant API.
first contract
API-blokken
per request
apart opgeslagen
De stack van boven naar beneden
Iedere consumer praat met dezelfde API-laag. De webapp bevat geen database-logica.
Frontend / Portal Mobile App External customers
SCADA Maintenance partners Reporting tools AI modules
↓
API layer
↓
Business logic
↓
Database / Time-series / FilesKern-endpoints
De webapp roept dezelfde endpoints aan als een externe partner.
De zeven API-blokken
Identity API
- • login
- • gebruikers
- • rollen
- • organisaties
- • rechten
Asset API
- • windparken
- • turbines
- • locaties
- • componenten
Measurement API
- • realtime meetdata
- • historie
- • aggregaties
Alert API
- • alarmregels
- • meldingen
- • opvolging
Maintenance API
- • werkbonnen
- • inspecties
- • serviceverslagen
Integration API
- • externe databronnen
- • SCADA-ingang
- • webhooks
- • API keys
Reporting API
- • dashboards
- • exports
- • KPI's
Multi-tenant beveiliging
Iedere API-call beantwoordt vier vragen voor de query naar de database gaat.
Wie ben je?
Authenticatie via token of OAuth2.
Bij welke organisatie hoor je?
Tenant-context bepaalt de scope.
Welke assets mag je zien?
AssetAccess filtert iedere query.
Welke actie mag je uitvoeren?
Scopes en rollen bepalen lees of schrijf.
User Marco Organization: Operator A Role: OperatorAdmin Access: Windpark A + Windpark B GET /api/assets/windfarms/C → 403 Forbidden
Meetdata apart behandelen
Tijdreeksen schalen anders dan stamdata. Splits relationele opslag van time-series en files.
Relationele database
- users
- organizations
- windfarms
- turbines
- rechten
- werkbonnen
Time-series database
- power
- windspeed
- vibration
- temperature
- alarms
SQL Server of PostgreSQL
Stamdata, gebruikers, rechten en werkbonnen.
TimescaleDB, InfluxDB of Azure Data Explorer
Hoogfrequente meetdata per turbine.
Blob Storage
Documenten, inspectiefoto's en rapportages.
Externe API-clients en scopes
Voor externen worden aparte ApiClients aangemaakt met scope en rate limit.
ApiClient
- OrganizationId
- Name
- ClientId
- SecretHash
- AllowedScopes
- RateLimit
- IsActive
Webhooks
Naast ophalen kunnen externen ook events ontvangen via subscriptions.
POST /api/webhooks/subscriptions
Advies, opbouw in stappen
Eerst het contract, dan de code.
OpenAPI / Swagger-contract
Eerst het API-contract ontwerpen voordat er code wordt geschreven.
Backend op basis van het contract
Business logic, multi-tenant security en time-series opslag.
Webportaal bovenop dezelfde API
Geen directe database-toegang, alles via de API-laag.
Externe koppelingen toelaten
API-clients, scopes, rate limiting en webhooks.
Mobiel, Power BI en AI aansluiten
Zelfde backend, andere consumenten.
Het resultaat: geen losse applicatie, maar een centraal wind-asset-platform waarop meerdere partijen veilig aansluiten.