Ontdek de kracht van Visma.Net API Webhooks

Werken met de Visma.net API webhooks

Op dit moment is things.io druk bezig met een project om onderdelen van de Visma.net API te koppelen aan andere systemen. Omdat we in dat project niet teveel willen “luisteren” als er nieuwe gegevens zijn willen we webhooks implementeren.

Een webhook, wat was dat ook alweer?

In de kern, webhooks zijn door de gebruiker gedefinieerde HTTP-callbacks die real-time communicatie tussen verschillende webapplicaties mogelijk maken. Ze stellen toepassingen in staat zich te abonneren op bepaalde gebeurtenissen en meldingen te ontvangen wanneer deze gebeurtenissen zich voordoen. Daardoor webhooks geautomatiseerde, asynchrone updates tussen toepassingen mogelijk, zodat er geen constante handmatige interventie of herhaalde polling nodig is.

Een veel voorkomende toepassing van webhooks is wanneer een toepassing updates wil ontvangen van een andere dienst. En dat is precies wat we willen.

Hoe willen we de Visma.net webhooks gebruiken?

We hebben een hele simpele use case. Als er een handmatige voorraad update is gedaan in Visma.net dan moet een WMS deze update ook overnemen via een webhook.

Om dit aan de praat te krijgen zijn er een aantal voorwaarden:

  • je moet een developer account hebben bij Visma.net;
  • je moet een service applicatie hebben binnen de Visma.net developer portal;
  • een Visma.net administratie moet uitgenodigd zijn.
We gaan er vanuit dat je weet hoe dit allemaal werkt. Als je dit niet weet en je wilt het wel weten neem dan eens contact op.

Authenticatie naar de Visma.net api

Hoewel we er vanuit gaan dat je weet hoe dit moet leggen we het nog wel even kort uit.

  • je moet een POST doen naar https://connect.visma.com/connect/token;
  • je gebruikt form-urlencoded;
  • je vult: grant_type, scope,client_id,client_secret en tenant_id in.
Zie hieronder hoe dit er in postman uitziet.
 
 
Als je dit uitvoert dan krijg je een token die je kunt gebruiken.

Overzicht webhook types

Om wat duidelijkheid te krijgen over de beschikbare webhooks is het verstandig om eerst een aanroep te doen naar https://integration.visma.net/API/resources/v1/event

Met deze methode krijg je te zien op welke onderdelen van Visma.net er standaard webhooks mogelijk zijn. Hieronder zie je een overzicht van het resultaat:

[
    {
        “eventType”: “purchaseorder_changed”,
        “name”: “PurchaseOrder changed”,
        “description”: “Triggered on status change or custom action”
    },
    {
        “eventType”: “supplier_changed”,
        “name”: “Supplier changed”,
        “description”: “Triggered after creation or update of a Supplier”
    },
    {
        “eventType”: “shipment_changed”,
        “name”: “Shipment changed”,
        “description”: “Triggered after creation or confirmation of a Shipment”
    },
    {
        “eventType”: “customer_changed”,
        “name”: “Customer changed”,
        “description”: “Triggered when a new customer was created or an existing one was updated”
    },
    {
        “eventType”: “arinvoice_changed”,
        “name”: “ARInvoice changed”,
        “description”: “Triggered on status change or custom action”
    },
    {
        “eventType”: “inventoryitem_changed”,
        “name”: “Inventory Item changed”,
        “description”: “Triggered after creation or update of an InventoryItem”
    },
    {
        “eventType”: “employee_changed”,
        “name”: “Employee changed”,
        “description”: “Triggered on changes of an Employee”
    },
    {
        “eventType”: “account_changed”,
        “name”: “Account changed”,
        “description”: “Triggered on changes of an Account entity”
    },
    {
        “eventType”: “project_changed”,
        “name”: “Project changed”,
        “description”: “Triggered on changes of a Project”
    },
    {
        “eventType”: “salesorder_changed”,
        “name”: “SalesOrder changed”,
        “description”: “Triggered on status change or custom action”
    }
]
Het eventype wat wij nodig hebben is inventoryitem_changed

Overzicht aangemaakte webhooks

Wat je nu wilt doen is kijken of er al webhooks zijn aangemaakt. Daarvoor roepen we https://integration.visma.net/API/resources/v1/subscription aan.

Deze kan het volgende resultaat geven als er iets aangemaakt is:

[
    {
        “id”: 9189,
        “event”: “inventoryitem_changed”,
        “hookUri”: “https://hook.eu1.make.com/<token>”
    }
]
Omdat wij een webhook hebben aangemaakt die naar make.com verwijst ziet het er zo uit. Uiteraard kunnen hier compleet verschillende URL’s staan. Als er een voorraadverandering is in Visma.net dan zal deze URL worden aangeroepen.

Webhook aanmaken

Dit is de realdeal. Als je een webhook wilt aanmaken dan roep je via een POST de volgende URL aan: https://integration.visma.net/API/resources/v1/subscription

We doen dit wederom in de body maar dan met een json structuur. Zie het Postman screenshot hieronder.

Je kunt een webhook URL van Make.com of Zapier gebruiken om het voor elkaar te krijgen.

Als we dit gedaan hebben dan zal elke voorraad verandering naar deze URL worden gestuurd.

Ga naar het Visma.net developer forum

Related Post

Leave a Reply