REST API Webhooks Datasets Pipelines SQL Server

Technische details

Alle technische informatie voor developers en IT-professionals

Architectuur overzicht

SQLio draait op je eigen server (Windows Server met IIS en .NET 9) en werkt met je SQL Server-databases. De configuratie staat in een eigen database, SQLioDB. De databases waarmee SQLio werkt, bijvoorbeeld je ERP, koppel je per omgeving.

Omgevingen

Omgevingen

Test, Acceptatie en Productie, elk met eigen databases. Met Omgeving sync zet je een geteste configuratie over naar productie.

SQL Server

Eigen server

Je data verlaat je netwerk alleen via de koppelingen die je zelf inricht. Geen cloudtussenstation.

Security

Beveiligd

Inkomende API's met gebruiker én API-key, rechten per API, en versleutelde opslag van geheimen.

Vier kernconcepten

Datasets

Datasets (Basis)

Bepalen welke data je deelt en in welke vorm.

  • Tabellen, views of stored procedures als bron
  • Geneste JSON met lagen (bijv. order → regels)
  • Bron voor API's, webhooks en pipelines
API's

API's (Pull)

Externe systemen halen data op of schrijven via REST API's.

  • GET, POST, PATCH en DELETE
  • Gebruiker, wachtwoord en API-key per aanroep
  • Automatische Swagger-documentatie
Webhooks

Webhooks (Push)

Bij een wijziging in de database stuurt SQLio direct een bericht naar een extern systeem.

  • Trigger op INSERT, UPDATE of DELETE, met voorwaarden
  • Herhaalpogingen en e-mail bij fouten
  • Antwoord terugschrijven in je database
Pipelines

Data pipelines (Gepland)

Stappen na elkaar: ophalen, omzetten, verwerken. Op een vast moment.

  • Interval of dagelijks op een vast tijdstip
  • Externe en interne API's, datasets, JSON samenstellen
  • Foutafhandeling en herhaalpogingen per stap

Hoe werken webhooks?

1
Database-trigger

SQLio maakt een trigger aan op de gekozen tabel, voor INSERT, UPDATE of DELETE

2
Wachtrij

Voldoet de wijziging aan de voorwaarden, dan zet de trigger haar in een wachtrij in dezelfde database. De transactie van de gebruiker wacht niet op het externe systeem.

3
Bericht samenstellen

SQLio bouwt de JSON: standaardvelden, eigen velden en eventueel data uit een dataset

4
Verzenden

Het bericht gaat naar het externe endpoint, met de authenticatie van die verbinding

5
Log en herhaalpogingen

Elke aanroep wordt gelogd. Bij een storing probeert SQLio het opnieuw; lukt het uiteindelijk niet, dan volgt een e-mail

6
Antwoord verwerken

Het antwoord kan via een API of stored procedure terug naar je database

Omgevingen en aliassen

Een omgeving is een complete, gescheiden inrichting: bijvoorbeeld Test en Productie. Elke omgeving heeft een eigen URL-prefix en eigen databases, zodat je veilig kunt testen zonder productie te raken.

Opbouw

Omgevingstypes

Test, Acceptatie en Productie. Productie heeft geen URL-prefix: /api/voorraad tegenover /api/test/voorraad

Connectie-aliassen

Een alias (bijv. erp, nl, be) is de logische naam van een database. Per omgeving bepaal je welke database erachter zit

Meerdere databases

Werk met meerdere databases tegelijk, bijvoorbeeld een ERP per vestiging, met één configuratie

Controle vooraf

SQLio controleert per connectie de verbinding, de rechten en de onderdelen voor webhooks

Van test naar productie

Omgeving sync

Zet datasets, API's, webhooks en pipelines in één keer over van Test naar Productie, inclusief versie

Productie alleen-lezen

Een omgeving kan alleen-lezen zijn: wijzigen gaat dan alleen via sync. Aan- en uitzetten blijft mogelijk

Testsessies

API's en webhooks in een testomgeving werken alleen tijdens een actieve testsessie. Zo verstuurt een test nooit per ongeluk berichten

Toegang per omgeving

Gebruikers krijgen toegang tot specifieke omgevingen; beheerders zien alles

Datasets

Datasets vormen de basis van alle integraties. Ze bepalen welke data beschikbaar is en in welke vorm, voor API's, webhooks en pipelines.

Databronnen

Table

Tabellen

Direct data ophalen uit database-tabellen

View

Views

Gebruik bestaande views met joins en logica

Stored Procedure

Stored procedures

Voer een stored procedure uit en gebruik het resultaat

Mogelijkheden

Lagen

Voeg onderliggende gegevens toe als lagen: als genest object, als lijst of samengevoegd met de bovenliggende laag

Velden kiezen en hernoemen

Bepaal welke kolommen meegaan, in welke volgorde en onder welke naam

Filters

WHERE-condities met onder meer =, >, LIKE, IN en BETWEEN, gegroepeerd met AND/OR

Parameters

Maak datasets dynamisch: de waarde komt uit de API-aanroep, de webhook of de pipeline

Per database beschikbaar

Vink aan voor welke aliassen (databases) een dataset geldt, en test hem met echte data

Uitvoer

Velden zonder waarde (NULL) weglaten en de lijst desgewenst verpakken in een object

API's

Maak REST API's waarmee externe systemen data ophalen of wijzigen. Elke API heeft één HTTP-methode; voor ophalen en wijzigen van hetzelfde maak je dus twee API's.

HTTP-methoden

GET

Data ophalen via een dataset

POST

Aanmaken in een tabel of via een stored procedure

PATCH

Bijwerken in een tabel of via een stored procedure

DELETE

Verwijderen uit een tabel of via een stored procedure

Voorbeeld GET met paginering

GET /api/test/verkooporders?after=240104 { "data": [ { "orderNr": 240105, "klant": { "naam": "Bakkerij De Molen" }, "regels": [ ... ] }, ... ], "pageSize": 50, "hasMore": true, "after": "240154" }

Configuratie per API

Bron

Een dataset voor GET, een tabel of stored procedure voor POST, PATCH en DELETE

Parameters

Uit de URL, de querystring of de body; verplichte parameters worden gecontroleerd

Paginering

Met een cursor (after) en een vaste paginagrootte, optioneel met het totaal

Swagger

Interactieve documentatie, automatisch per omgeving en per database-alias

Rechten per API

Per API-gebruiker bepaal je welke API's hij mag aanroepen

Audit-log

Elke aanroep wordt gelogd: gebruiker, IP-adres, verzoek, antwoord, status en duur

Webhooks

Een webhook stuurt een bericht naar een extern systeem zodra er in je database iets verandert. Je bepaalt zelf wanneer, wat en waarheen.

Bericht (JSON)

Je stelt het bericht zelf samen uit standaardvelden (table, field, oldValue, newValue, operation, timestamp, elk te hernoemen), eigen velden (een vaste waarde of een kolom uit de gewijzigde rij) en eventueel data uit een dataset:

{ "table": "Verkooporders", "operation": "UPDATE", "timestamp": "2026-09-29T17:03:19Z", "orderNr": 240104, "data": { "orderNr": 240104, "klant": { "naam": "Bakkerij De Molen" }, "regels": [ { "artikel": "A-100", "aantal": 4 } ] } }

Configuratie

Trigger

Per webhook één type: nieuwe, gewijzigde of verwijderde regel

Voorwaarden

Alleen versturen als een veld wijzigt of aan een waarde voldoet, gecombineerd met AND/OR; voor lastige gevallen een eigen SQL-conditie

Batches

Bundel meerdere wijzigingen in één bericht

Herhaalpogingen

Bij een storing probeert SQLio het opnieuw (instelbaar aantal); bij een fout in het verzoek zelf (4xx) niet

Antwoord verwerken

Stuur het antwoord door naar een interne API of een stored procedure, die het terugschrijft in je database

Meldingen

Een e-mail aan vaste ontvangers als een bericht definitief niet lukt

Authenticatie naar externe systemen

Hoe SQLio een extern systeem bereikt, leg je één keer vast per verbinding (externe endpoints). Webhooks en pipelines gebruiken die verbinding. Mogelijk zijn:

  • API-key — in een header naar keuze
  • Basic Auth — gebruikersnaam en wachtwoord
  • Bearer-token — een vast token
  • OAuth 2.0 Client Credentials — token automatisch ophalen, bewaren en vernieuwen
  • HMAC-SHA256-handtekening — over de body, in hex of base64
  • Eigen headers — los of in combinatie met de methoden hierboven

Data pipelines

Een pipeline voert stappen na elkaar uit, bijvoorbeeld: zendingen ophalen bij een transporteur, het antwoord omzetten en via een interne API in je database verwerken. De uitvoer van een stap is de invoer van de volgende.

Stappen

Planning

De eerste stap bepaalt wanneer de pipeline draait: elke zoveel minuten of dagelijks op een vast tijdstip. Handmatig starten kan altijd

Externe API

Roep een extern systeem aan via een externe endpoint

Interne API

Verwerk data in je eigen database via een SQLio-API, ook via API's die niet naar buiten zichtbaar zijn

Dataset

Haal data op uit je database als invoer voor de volgende stap

JSON samenstellen

Zet data om in de vorm die het volgende systeem verwacht

Batches

Verwerk grote hoeveelheden in delen

Betrouwbaarheid

Foutafhandeling per stap

Bij een fout stoppen, doorgaan of naar een andere stap springen

Herhaalpogingen

Per stap in te stellen, met oplopende wachttijd en een time-out

Logboek

Elke run met de status, invoer en uitvoer per stap en per batch

Meldingen

Een e-mail als een pipeline mislukt

Security

SQLio draait op je eigen server en werkt met de minimale rechten die nodig zijn. Toegang tot data verloopt alleen via de API's en koppelingen die je zelf inricht.

Inkomend verkeer (API's)

API-key

Gebruiker én API-key

Elke aanroep heeft Basic Auth én een API-key nodig, van dezelfde API-gebruiker. Een key hoort bij één omgeving en kan een vervaldatum hebben.

Rechten

Rechten per API

Per API-gebruiker bepaal je welke API's hij mag aanroepen. Alle andere aanroepen worden geweigerd.

Audit-log

Audit-log

Elke API-aanroep wordt vastgelegd: wie, vanaf welk IP-adres, wat en met welk resultaat.

Uitgaand verkeer (webhooks en pipelines)

OAuth 2.0

OAuth 2.0 Client Credentials

Tokens worden automatisch opgehaald, versleuteld bewaard en vernieuwd als ze verlopen.

HMAC

HMAC-handtekening

Het ontvangende systeem kan controleren dat een bericht echt van SQLio komt en onderweg niet is gewijzigd.

Opslag en toegang

Opslag

Wachtwoorden en keys als hash

Wachtwoorden van gebruikers en API-gebruikers (PBKDF2) en API-keys (SHA-256) worden alleen als hash opgeslagen. Een API-key is maar één keer zichtbaar, bij het aanmaken.

Versleuteling

Versleutelde geheimen

Connection strings en geheimen van externe systemen worden versleuteld (AES-256) met een sleutel die per installatie wordt aangemaakt.

Rollen

Rollen en toegang per omgeving

Gebruikers richten datasets, API's, webhooks en pipelines in voor de omgevingen waar ze toegang toe hebben. Beheerders beheren daarnaast omgevingen, API-gebruikers, instellingen en de sync. Aanmelden kan lokaal of via Microsoft Entra ID (Azure AD).

Minimale rechten

Minimale databaserechten

SQLio werkt in je databases via een eigen rol (SQLioRole) met alleen de rechten die nodig zijn. Webhook-triggers worden aangemaakt via één vaste procedure, zodat SQLio zelf geen rechten nodig heeft om tabellen te wijzigen.

Technische vragen?

Neem contact op voor een technisch gesprek of vraag een demo aan

Demo aanvragen Neem contact op