Naar de inhoud

Programmeren

API's: zo praten jouw systemen met elkaar

Een API is de vaste manier waarop twee computersystemen met elkaar praten. Je webshop geeft er een bestelling mee door, een betaaldienst meldt er een betaling mee, een verzenddienst maakt er een label mee. Zonder API typt iemand die gegevens over. Met een API gaat het vanzelf. Hier lees je wat een API is, wat een sleutel is en wat er gebeurt als het even misgaat. Meer technieken staan bij programmeren.

Wat is een API?

API is een Engelse afkorting, van "application programming interface". In gewone taal: een afgesproken manier om iets te vragen aan een ander systeem.

Vergelijk het met een loket bij de gemeente. Je loopt niet zelf het archief in. Je vult een vast formulier in en krijgt een antwoord in een vaste vorm terug. Een API werkt net zo:

  • Het loket is een vast adres op internet, zoals dat van de betaaldienst Mollie.
  • Het formulier is de vraag in een vaste vorm. Welke velden erin staan, staat in de handleiding van de API.
  • Het antwoord komt ook in een vaste vorm terug. Vaak is dat JSON: een tekstvorm voor gegevens die mensen en computers allebei kunnen lezen.
  • Het briefje bij een fout is een code, zoals "niet gevonden", "geen toegang" of "te veel vragen, wacht even".

Het andere systeem hoeft niet te weten hoe jouw systeem van binnen werkt. Ze kennen alleen het formulier. Daardoor kun je systemen van verschillende bedrijven aan elkaar koppelen. En het kan twee kanten op: het andere systeem kan jou ook een seintje geven, zoals Mollie doet als een klant heeft betaald.

Een sleutel: wie mag wat?

Bij de meeste API's moet je laten zien wie je bent. Dat doe je met een sleutel: een lange, geheime reeks tekens die bij elke vraag meegaat. In vaktaal heet dat een token. Het loket kijkt naar de sleutel en weet dan wie er vraagt en wat die mag.

Met de sleutel van een betaaldienst kun je geld terugbetalen, met die van een webshop producten aanpassen. Daarom blijft een sleutel geheim, net als de pincode van je bankpas. Wie hem heeft, kan doen alsof hij jou is.

Zo gaan wij ermee om:

  • Niet in de code. Sleutels staan in een apart bestand op de server, los van het programma zelf. De geheime gegevens zet je broer zelf neer.
  • Rechten pas als het nodig is. Bij Shopify bepaal je per sleutel wat hij mag. Komt er een taak bij, zoals retouren inzien, dan is er een nieuwe sleutel nodig.
  • Kort geldig waar het kan. Bij bol krijgt ons voorraadsysteem een sleutel die ongeveer vijf minuten geldig is. Daarna haalt het vanzelf een nieuwe.

Soms zijn wij zelf het loket. Voor PandInfo bouwden we een eigen API voor de systemen van makelaars. Een makelaar ziet zijn sleutel één keer, bij het aanmaken. Wij bewaren alleen een soort vingerafdruk ervan, waaruit je de sleutel niet kunt terugrekenen.

Waar wij het voor gebruiken

Veel van wat we bouwen, praat met een ander systeem. Het gaat hier niet om de namen, maar om de techniek erachter.

  • Voorraadsysteem.com: verkopen, voorraad en labels. Ons voorraadsysteem praat via een API met Shopify en bol: bestellingen komen binnen, de voorraad gaat terug. Verzendlabels komen via de API van MyParcel. Elke dienst heeft zijn eigen loket en eigen regels.
  • Betalen bij PandInfo en Lichthoek. De site vraagt Mollie om een betaling klaar te zetten, de klant betaalt bij Mollie, en Mollie geeft de site een seintje. Daarin staat alleen een nummer. De stand van de betaling vraagt de site daarna zelf op bij Mollie. Zo kan niemand met een nepbericht laten denken dat er betaald is.
  • Nummerbordcheck.nl: open gegevens van de RDW. De RDW zet een groot deel van het kentekenregister online, met een API zonder sleutel. Vul je een kenteken in, dan vraagt onze server meerdere tabellen tegelijk op en zet de antwoorden op één pagina. Een foto van het model komt via de API van Wikipedia, ook via onze server. De bezoeker praat dus alleen met ons.
  • PandInfo: meer dan dertig bronnen. Een adres intypen zet vragen uit bij PDOK en het Kadaster, het CBS, het energielabelregister van RVO, de Omgevingswet en meer. Veel van die bronnen zijn open. Voor een paar hebben we een eigen sleutel aangevraagd.
  • Lichthoek: adres controleren en bestellingen doorgeven. Bij het afrekenen controleert Lichthoek postcode en huisnummer in de officiële adressenlijst, via PDOK van het Kadaster. Alleen postcode en huisnummer gaan daarheen, geen naam of e-mailadres. Een betaalde bestelling gaat via een API naar het voorraadsysteem, en de track-and-trace komt langs dezelfde weg terug. Die API ontwierpen we zelf.

Als een API verandert of even niet werkt

Een API is van een ander bedrijf. Dat bedrijf kan hem aanpassen, en soms is hij even niet bereikbaar. Daar houden we vanaf het begin rekening mee.

Even geen antwoord. Elke vraag heeft bij ons een tijdslimiet. Wat er daarna gebeurt, kiezen we per geval.

  • Bij Nummerbordcheck.nl zie je dan een nette pagina: de RDW antwoordt niet, probeer het over een minuut opnieuw. Valt alleen een bijtabel weg, dan zie je de rest gewoon.
  • Bij PandInfo geeft het energielabelregister soms pas na acht seconden antwoord. Bij een storing vragen we het daarom nog één keer, met een langere wachttijd. Lukt dat ook niet, dan staat er in het rapport een nette melding met waar je het label zelf kunt opzoeken.
  • Bij Lichthoek houdt een storing bij PDOK de bestelling niet tegen. De bestelling krijgt dan een vlag "niet gecontroleerd".

Te veel vragen. Veel API's hebben een grens: zoveel vragen per minuut. Ga je erover, dan krijg je de code "wacht even". Bol stuurt mee hoe lang, en ons voorraadsysteem wacht precies zo lang. Zelf houden we ook rekening met de ander: Nummerbordcheck.nl bewaart een antwoord van de RDW een kwartier, zodat verversen de RDW niet onnodig belast. En onze eigen API voor makelaars bij PandInfo neemt per sleutel hooguit zestig vragen per minuut aan.

Opnieuw proberen, zonder dubbel. Een betaalde bestelling van Lichthoek naar het voorraadsysteem gaat via een wachtrij. Lukt het niet, dan probeert de winkel het opnieuw: na een minuut, dan na twee, vijf en tien minuten, en zo steeds wat later, tot eens per twaalf uur. Maar opnieuw proberen mag geen dubbele bestelling geven. Daarom heeft elke bestelling een vast nummer, en het voorraadsysteem herkent een bestelling die het al heeft. Bij Shopify gaat er een vaste code mee die bij een nieuwe poging gelijk blijft.

Een fout die opnieuw proberen niet oplost. Klopt de sleutel niet, of is het bericht zelf fout, dan heeft nog een keer proberen geen zin. De koppeling tussen Lichthoek en het voorraadsysteem stopt dan met proberen en zet een melding in het beheer.

Een API die verandert. Grote diensten geven hun API een versie. Bij bol gebruiken we nu versie 10, bij Shopify een versie met een datum erin. Die versie staat vast in ons programma. Komt er een nieuwe, dan passen we het aan en testen we opnieuw voordat het live gaat. Voor onze eigen API tussen Lichthoek en het voorraadsysteem is de afspraak: velden en foutcodes veranderen niet stilletjes.

In de gaten houden. We houden in de gaten of alles draait, en grijpen in als het nodig is.

Zo bouwen we het

  1. Eerst de handleiding. We lezen hoe de API werkt: welke vragen, welke antwoorden, welke grenzen en welke foutcodes.
  2. Zo weinig mogelijk delen. We sturen alleen wat nodig is, zoals alleen postcode en huisnummer naar PDOK. Gegevens die een klant in zijn site of systeem bij ons zet, delen we niet met de AI-hulp waarmee we bouwen.
  3. Testen zonder echte gevolgen. We testen met verzonnen gegevens in dezelfde vorm als de echte. Met de echte gegevens kijkt je broer zelf. Een betaling testen we in een proefstand, zonder echt geld. Bij MyParcel kost een zending wel echt geld, dus maakt het voorraadsysteem daar pas een zending aan na een klik.
  4. Live na controle. We bouwen met hulp van AI. Elke wijziging gaat eerst door onze tests. Daarna leest een aparte AI-hulp alles nog eens na, en live gaat het pas na het akkoord van je broer.
  5. Draaien op onze eigen server. Een koppeling die moet blijven werken, draait op onze eigen server, in een datacenter binnen de EU. Wat er binnenkomt, slaan we op in een database. Daarover lees je meer bij databases.

Wat jij ervan merkt

Als het goed gaat: bijna niets. Een bestelling staat vanzelf in je systeem, de voorraad klopt op elk kanaal, en een klant krijgt zijn track-and-trace zonder dat iemand iets overtypt.

Gaat het even mis bij de ander, dan krijgt je bezoeker waar het kan een nette melding in plaats van een foutscherm.

Wat het kost

Voor veel systemen hebben we al een koppeling klaarstaan. Die vind je bij koppelingen en automatisering. Wil je iets koppelen waar nog niets voor bestaat? Dan is het een koppeling op maat: vanaf € 395, daarna € 10 per maand.

Een koppeling moet blijven draaien, dus hij zit in een pakket. Kleine broer, vanaf € 19 per maand plus eenmalig bouwen vanaf € 495, is voor één koppeling tussen twee systemen. Grote broer, vanaf € 68 per maand en zonder opstartkosten, is je eigen omgeving. Alle bedragen zijn exclusief btw. Je krijgt altijd eerst een offerte.

Wat we eerder bouwden

  • Voorraadsysteem.com. Onze eigen voorraadsoftware, met koppelingen aan Shopify, bol en MyParcel.
  • PandInfo. Meer dan dertig openbare bronnen achter één zoekvak, betalen via Mollie, en een eigen API voor makelaars.
  • Nummerbordcheck.nl. Een gratis kentekencheck op de open gegevens van de RDW.
  • Lichthoek. Een webshop die via een API met het voorraadsysteem praat: producten erin, bestellingen eruit.

Vaak gevraagd

Hoe weet ik of mijn systeem een API heeft?

Noem ons de naam van het pakket. Vaak weten we het meteen, anders zoeken we het voor je uit. Heeft het geen API, dan kijken we wat er wel is, zoals een bestand dat het systeem kan maken of inlezen.

Is het veilig om mijn systemen te koppelen?

Een koppeling is zo veilig als de manier waarop je met de sleutels omgaat. Wij zetten sleutels niet in de code, vragen rechten pas als een taak ze nodig heeft en sturen alleen de gegevens mee die nodig zijn. Onze server staat binnen de EU.

Wat als een koppeling stilvalt?

Bij Lichthoek wacht wat de deur uit moet in een rij, en de winkel probeert het later opnieuw. Een bericht dat door een fout blijft hangen, komt als melding in het beheer.

Kost het gebruik van een API zelf ook geld?

Soms. Open gegevens, zoals die van de RDW, zijn gratis. Bij andere diensten betaal je voor wat je doet, zoals een verzendlabel bij MyParcel. Dat bespreken we vooraf.

Werk

Gemaakt door je broer

voorraadsysteem.com
Homepage van Voorraadsysteem.com op een computer: voorraad, kassa en koppelingen.
Voorraadsysteem.com op een telefoon.

002 · eigen software

Voorraad­systeem.com

Onze eigen software: voorraad, bestellingen, verzending, facturen en kassa in één omgeving, gekoppeld aan Shopify, bol en MyParcel. De basis onder alles wat we voor klanten bouwen.

  • Eigen software
  • Koppelingen
  • Kassa
voorraadsysteem.com ↗ Lees het verhaal
pandinfo.nl
De voorpagina van pandinfo.nl: een adres invoeren, zoeken op de kaart, en hoe het werkt.
De voorpagina van pandinfo.nl op een telefoon.

003 · webapp

PandInfo

Typ een adres en PandInfo zet binnen een paar seconden op een rij wat de overheid over dat pand weet: bouwjaar, oppervlakte, energielabel, bestemmingsplan, monument, bodem, funderingsrisico, verkoopprijzen en de buurt. In gewone taal, met de bron bij elk cijfer, en ook als pdf. Achter de schermen vraagt het tegelijk meer dan dertig openbare bronnen op, van het Kadaster tot de Omgevingswet.

  • Open overheidsdata
  • Koppelingen
  • Webapp
  • PDF-rapport
  • Omgevingswet
pandinfo.nl ↗ Lees het verhaal
nummerbordcheck.nl
De voorpagina van nummerbordcheck.nl: een gele kentekenplaat als invoerveld, een voorbeeldkaart met stoplichten, en wat je ziet.
De voorpagina van nummerbordcheck.nl op een telefoon.

004 · webapp

Nummerbord­check.nl

Kentekencheck: vul een Nederlands kenteken in en zie in gewone taal wat de RDW openbaar weet, met stoplichten per punt, de hele keuringsgeschiedenis, terugroepacties en leuke feitjes. Van idee tot live in twee dagen.

  • Open data RDW
  • Webapp
  • Eigen huisstijl
  • Twee dagen
nummerbordcheck.nl ↗ Lees het verhaal
lichthoek.nl
De voorpagina van lichthoek.nl: foto- en videoapparatuur, populaire producten, categorieën, direct leverbaar en merken.
De voorpagina van lichthoek.nl op een telefoon.

005 · webshop

Lichthoek

Een webshop voor foto- en videoapparatuur, fotolijsten en fotopapier, met ruim 3.800 producten. Producten, prijzen en voorraad komen vanzelf uit het voorraadsysteem, en een bestelling gaat vanzelf terug, met de track-and-trace naar de klant. Gebouwd en live op één dag.

  • Webshop
  • 3.800 producten
  • Gekoppeld aan voorraad
  • Eigen server
lichthoek.nl ↗ Lees het verhaal

Meer over programmeren

  • JavaScript

    JavaScript is de taal die in de browser van je bezoeker draait. Waar wij het voor gebruiken, en waarom we er zuinig mee zijn.

  • Databases

    Wat is een database en wat heb je eraan? Zo bewaren wij voorraad, bestellingen en facturen: met SQLite, op onze eigen server binnen de EU.

  • Rapporten en pdf's

    Facturen, offertes, picklijsten of een rapport over een pand: wij bouwen programma's die uit je gegevens vanzelf een nette pdf maken.

Contact

Bel je broer.

Liever eerst mailen? Ook prima. Je broer leest alles, en belt terug als het ingewikkeld wordt.

Eerst weten wat het kost?Alle prijzen staan op de site, vanaf € 19 per maand.