Hoe werkt een AFAS API koppeling?

Een AFAS API koppeling praat met Profit via de REST API. Een AppConnector bepaalt wat de koppeling mag: GetConnectoren lezen gegevens uit Profit, UpdateConnectoren schrijven terug.

Samenvatting

  • Elke koppeling krijgt een eigen AppConnector. Wat daar niet in aanstaat, kan hij niet aanroepen.
  • Zonder skip en take geeft een GetConnector maar 100 regels terug.
  • Bestaande Classic tokens verlopen op 15 februari 2027. Vanaf 31 augustus 2027 werken koppelingen met Classic tokens niet meer.
  • Beheren wij jullie koppelingen? Dan zetten wij ze om naar OAuth. Jullie hoeven nu niets te doen.
In dit artikel

Wat een AppConnector bepaalt in een AFAS API koppeling

Wij geven elke koppeling een eigen AppConnector in Profit. Daarin staat welke GetConnectoren en UpdateConnectoren de koppeling mag aanroepen. Wat er niet in aanstaat, kan de koppeling niet aanroepen.

De AppConnector hangt aan een vaste gebruiker in Profit, en de koppeling werkt met de rechten van die gebruiker. AFAS raadt na het inrichten twee instellingen aan:

  • een IP-restrictie op de AppConnector;
  • filterautorisatie voor de gebruikersgroep: een GetConnector haalt dan alleen de records op waarvoor de groep rechten heeft.

Lezen en terugschrijven: GetConnector en UpdateConnector

Beide wisselen JSON uit met Profit, maar ze werken verschillend:

GetConnectorUpdateConnector
DoelLeest gegevens uit ProfitSchrijft gegevens naar Profit
InhoudSamengesteld in Profit: welke records, welke velden, eventueel een vast filterLigt vast: een eigen endpoint met velden die AFAS bepaalt
AanroepFilters op velden, met skip en take in delenPOST voegt toe, PUT wijzigt, DELETE verwijdert; welke kan, verschilt per connector
VoorbeeldNieuwe medewerkers voor Entra IDTags op een contact, via KnContact

De AFAS Microsoft Entra ID koppeling haalt elke nacht via een GetConnector de medewerkers op die binnen twee weken in dienst komen en nog geen account hebben. Voor hen maakt de koppeling een account aan in Entra ID.

Heen en terug in één koppeling kan ook. De AFAS ActiveCampaign koppeling haalt contacten uit Profit met een GetConnector en zet ze klaar in ActiveCampaign. De tags uit ActiveCampaign schrijft de koppeling via de KnContact UpdateConnector terug op het contact in Profit.

Een GetConnector in de praktijk: filters, limieten en bestanden

Hoe het werkt
FilterenIn de aanroep op velden, met operators als 'is gelijk aan' of 'bevat', gecombineerd met EN en OF
100 regelsZonder skip en take komen alleen de eerste 100 regels terug
Skip en takeGrotere sets in delen ophalen, altijd gesorteerd: anders kan de volgorde tussen twee aanroepen verschuiven
150.000 cellenHet advies van AFAS per aanroep: kolommen maal regels
Fair useHaalt een koppeling elke minuut dezelfde dataset van 15 MB op, dan kan AFAS contact opnemen. Dat voorbeeld geeft AFAS zelf
Alleen wat veranderd isBijna elke GetConnector kan 'aangemaakt op' en 'gewijzigd op' meenemen. Filtert de koppeling daarop, dan haalt hij alleen op wat sinds de vorige aanroep veranderd is
BestandenAparte connectoren: de SubjectConnector voor bijlagen bij dossieritems, de FileConnector voor bestanden

Inloggen via OAuth: Classic tokens stoppen in 2027

Veel koppelingen loggen nu in met een Classic token: een vaste sleutel die vaak jaren geldig blijft. AFAS zegt zelf waarom het daarvan afstapt: "Lekt de sleutel uit, dan heeft een kwaadwillende dus lang toegang tot je omgeving."

De opvolger is OAuth. Voor een koppeling tussen twee systemen is dat de client credentials flow. De AppConnector krijgt een client id en een client secret, en daarmee vraagt de koppeling zelf een toegangstoken aan. Dat token is een uur geldig. Daarna vraagt de koppeling met de client id en het client secret een nieuw token aan.

De tijdlijn van AFAS

  • 15 februari 2027 Bestaande Classic tokens verlopen. AFAS: "Vanaf dat moment werkt de koppeling niet meer."
  • Daarna, tijdelijk Een nieuw Classic token is nog mogelijk, maximaal een halfjaar geldig.
  • 31 augustus 2027 Koppelingen met een Classic token werken niet meer.

Beheren wij jullie koppelingen? Dan zetten wij ze om naar OAuth. Met Profit 9 wordt dat volgens AFAS een stuk eenvoudiger, omdat het authenticatietype van een bestaande AppConnector dan kan worden aangepast. Daarom zetten we de koppelingen gefaseerd om zodra jullie omgeving op Profit 9 draait. Ons doel is dat alle koppelingen die wij beheren vóór 15 februari 2027 op OAuth staan.

Jullie hoeven daar nu niets voor te doen: na de omzetting krijgen jullie een bevestiging, en hebben we extra toegang tot jullie AFAS-omgeving nodig, dan nemen we vooraf contact op.

Zo zie je welke AppConnectoren naar OAuth moeten

  1. Ga in Profit naar Algemeen / Beheer en open de AppConnectoren.
  2. Bekijk per AppConnector het type en het authenticatietype.
  3. Type 'Onderhoud door klant', met 'Classic token' of 'Hybride'? Dan moet die AppConnector naar OAuth.

De AppConnectoren die AFAS standaard uitlevert, zoals die van AFAS Payment Service, zet AFAS zelf om.

Wat jullie bepalen en wat wij bouwen

Jullie weten welke processen van een koppeling afhangen, en bepalen welke gegevens erin mogen. Wij bouwen de rest: de AppConnector met de GetConnectoren en UpdateConnectoren die de koppeling nodig heeft, en de koppeling zelf in Node-RED of Node.js. Hoe we dat aanpakken, lees je bij AFAS koppeling laten maken.

Veelgestelde vragen

De client credentials flow. AFAS gebruikt die voor automatische koppelingen tussen twee systemen, waarbij geen gebruiker inlogt. De authorization code flow is voor toepassingen waarin een gebruiker zelf inlogt en toestemming geeft.

De AppConnector bepaalt wat een koppeling mag, met de rechten van een vaste gebruiker in Profit. Het token is waarmee de koppeling inlogt. Bij OAuth vraagt de koppeling dat token zelf aan, met de client id en het client secret van de AppConnector.

Profit toont ze bij het aanmaken van een AppConnector met OAuth. Het client secret zie je maar één keer. De client id blijft zichtbaar, maar is niet te wijzigen.

Bronnen

Wil je dat wij jullie AFAS-koppeling bouwen?

Nog geen klant? Dan bouwen we de koppeling voor jullie. In een kort gesprek hoor je hoe.