castomFLOW

Alles verbinden

HTTP erin, HTTP eruit, de lastige delen geregeld

Elk automatiseringstool adverteert met een aantal integraties. Dat aantal is altijd groot en het is altijd de verkeerde vraag, want het systeem dat je echt nodig hebt is het systeem dat in 2014 in-house is gebouwd door iemand die inmiddels weg is. Wat telt is hoe goed de tool de protocol spreekt dat eronder ligt.

De kant-en-klare verbindingen

De applicaties waarop de meeste bedrijven draaien hebben voorbereide stappen: winkels en marktplaatsen, boekhouding en facturatie, spreadsheets en databases, agenda's en e-mail, opslag en berichten, CRM's en helpdesks, betaalproviders en vervoerders. Je autoriseert het account een keer en de velden hebben de namen die de applicatie zelf gebruikt, niet de namen uit zijn JSON.

Waar een applicatie een typisch Poolse eigenschap heeft — een factureringssysteem dat KSeF-ready moet zijn, een vervoerder waarvan de labels een nationale standaard zijn — weet de voorbereide stap daarvan, want de familie verkoopt in die markt en moest het leren.

En dan het algemene geval

Alles anders is een HTTP-stap, en een HTTP-stap hier is geen troostprijs. Het is dezelfde machinerie waarop de kant-en-klare verbindingen zijn gebouwd, met dezelfde afhandeling van de delen die zelf schrijven vervelend is.

De vervelende delen

Geregeld, zodat je ze niet opnieuw schrijft

Authenticatie

API-sleutels, bearer-tokens, basic auth, OAuth 2 met refresh, HMAC-verzoekondertekening, mutual TLS. Een credential wordt een keer opgeslagen, op naam gerefereerd, en nooit geprint in een log of runrecord.

Paginering

Cursors, paginanummers, offsets, Link-headers, en de API die het einde aangeeft door een lege array terug te geven. Zeg welke vorm het is en de stap loopt de hele set door.

Rate limits

Een plafond per verbinding, gerespecteerd door elke workflow die hem gebruikt. Als een provider 429 antwoordt met een Retry-After, wacht de stap die tijd in plaats van door te hameren.

Retries en backoff

Tijdelijke fouten worden opnieuw geprobeerd met een oplopende tussenpoos en een limiet. Een stap is een pure functie van zijn inputs, dus een retry draait de stap opnieuw, niet de hele run.

Onhandige payloads

JSON, form-encoding, XML, platte tekst, multipart-uploads. Antwoorden geparseerd in velden die je op naam kunt refereren, ook degenen die vier niveaus diep genest zitten.

Timeouts

Een limiet per stap, zodat één trage afhankelijkheid geen worker kan vasthouden terwijl alles erachter in de wachtrij staat. Wat er gebeurt als de limiet wordt bereikt, beslis je zelf, per stap.

Als het HTTP spreekt, is het gesprek al begonnen.

Inkomende webhooks, serieus genomen

Elke workflow kan een URL hebben die hem start. Die URL verifieert handtekeningen — HMAC in de vormen die de gangbare providers gebruiken, en een gedeeld geheim waar dat het enige is dat de afzender aankan. Een niet-ondertekend verzoek naar een workflow die een handtekening verwacht, wordt geweigerd en geregistreerd, niet stilletjes verwerkt.

Deduplicatie gebeurt op de eigen identifier van de payload, zodat een afzender die opnieuw verstuurt omdat hij je 200 niet op tijd zag, één run krijgt in plaats van drie. Misvormde payloads worden bewaard, met de reden waarom ze geweigerd zijn, want de meest voorkomende oorzaak van een mysterieus gat in een automatisering is een afzender die van gedachten veranderde over een veld.

De systemen die alleen CSV spreken

Ze bestaan. Er verschijnt een bestand om vier uur 's nachts op een SFTP-server, of komt binnen als bijlage, of wordt in een gedeelde map gezet. Een workflow kan ernaar uitkijken, het lezen, en elke rij als record behandelen — inclusief het bestand met een byte-order mark, puntkomma's als scheidingsteken en een headerrij in het Pools, want zo ziet de export er nu eenmaal uit.

De andere kant op werkt ook: een workflow kan een bestand samenstellen en het neerzetten waar het andere systeem het verwacht, en dat is vaak de enige interface die een stuk software uit 2006 heeft.

Nachtelijke leveranciersfeedSFTP → HTTP
  • ⚡TriggerNieuw bestand op de SFTP van de leverancier: stock-2026-09-09.csv.
  • 2ParsenPuntkomma's, byte-order mark, Poolse headers. 4 118 rijen.
  • 3NormaliserenValutacodes gecontroleerd tegen referentiedata; twee als ongeldig geweigerd.
  • 4PushHTTP PATCH in batches van 200, rate limit gerespecteerd.
  • !UitzonderingenTwee rijen aangehouden voor een persoon, met het rijnummer en de reden. De andere 4 116 gingen erdoorheen.

Stappen die een model aanriepen: 0Kosten van deze run: niets

Waar inloggegevens staan

Versleuteld, op naam gerefereerd, afgebakend tot de workspace die er eigenaar van is, en nooit weergegeven in een runlog, een foutmelding of een supportgesprek. Een runrecord laat zien dat een stap zich heeft geauthenticeerd als supplier-sftp; het laat niet zien wat supplier-sftp is.

Een bureau dat één workflow voor dertig klanten draait, geeft elke klant een eigen set inloggegevens, en de workflow verwijst naar de set in plaats van naar het geheim. Een sleutel roteren is één bewerking op één plek — dat is de belangrijkste reden dat bureaus hier komen.

De limiet die je moet kennen: een systeem zonder enige interface — geen API, geen webhook, geen bestandsdrop, niets behalve een persoon die in een browser klikt — is niet te automatiseren, door ons of door wie dan ook die eerlijk is. Er is hier geen headless browser die zich voordoet als gebruiker, want die breekt zodra de andere kant een knop verplaatst, en breekt dan ongemerkt.