Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Introductie

Assistance Online faciliteert de mogelijkheid om externe systemen aan te spreken op basis van een event in Assistance Online.: webhooks.
In dit document wordt beschreven hoe deze webhooks geconfigureerd kunnen worden.

Hiervoor moet gebruik worden gemaakt van de swaggerpagina van de api en er moet geautoriseerd zijn als superuser

Opvragen van de bestaande definities

De bestaande definities kunnen worden opgevraagd met GET /webhooks-definitions/

NB. Alleen de webhook definitie 'OrderStatusChanged' bestaat nu.

Opvragen van de bestaande webhooks

Met gebruik van GET /webhooks kunnen de bestaande definities worden opgevraagd.
Met gebruik van GET /webhooks/:id kan een bestaande definitie worden opgevraagd.

NB. Bij de aanvragen wordt per webhook dezelfde informatie terug gegegeven.

Wijzigen van een webhook of toevoegen van een webhook

Met gebruik van PUT /webhooks/:id kan een bestaande webhook worden aangepast.

Met gebruikt van POST /webhooks kan een nieuwe webhook worden toegevoegd.

De body is bij beide methode hetzelfde

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", 
  "name": "Naam van deze webhook",
  "webhookDefinitionName": "OrderStatusChanged", // verwijzing naar bestaande webhookdefinition
  "httpConfiguration": { // configuratie waarmee bericht naar extern systeem wordt gestuurd
    "method": "POST", /
    "url": "https://some.url",
    "username": "user", // username en password worden gebruikt voor Basic authenticatie
    "password": "pwd",
    "httpHeaders": [ // eventueel aanvullende headers
      {
        "key": "string",
        "value": "string"
      }
    ]
  },
  "filter": {
    "filterTemplate": "string" // zie uitleg verderop in dit artikel
  },
  "includedResourceNames": [ // zie uitleg verderop in dit artikel
    "Order",
    "Customer",
    "Company",
    "IncidentLocation",
    "InterimLocations",
    "DestinationLocation",
    "ImOrder",
    "Vehicle",
    "Jobs",
    "JobBillings"
  ],
  "isActive": true // status van de webhook.
}

Verwijderen van een webhook

Met gebruik van DELETE /webhooks/:id kan een webhook worden verwijderd

NB. Deze actie kan niet meer ongedaan worden gemaakt, anders dan een nieuwe webhook configureren.

Status wijzigen van een webhook

Met gebruik van PUT /webhooks/:id/status kan een webhook ge(de)activeerd worden

Voor een webhook die niet actief is, worden de events in Assistance Online genegeerd en wordt er geen bericht verstuurd naar een extern systeem.

Opvragen logging

Met gebruik van GET /webhooks/:id/invocations en GET /webhooks/:id/invocations/:invocationId kan de logging worden opgevraagd .

Instellen Filter

BIj het configureren van een webhook kan een filter worden ingesteld om meer specifiek te kunnen bepalen wanneer er informatie naar een extern systeem wordt gestuurd.

Het filter is een template dat gerenderd wordt met het bericht als input en een boolean waarde moet teruggeven. Andere resultaten leveren een exceptie.

Bijvoorbeeld:

Een gegeven orderstatus changed bericht (zonder resources)

{
    "orderNumber": "O-0000303",
    "previousStatus": "Accepted",
    "newStatus": "Assigned",
    "resourceReference": "/tenants/1/orders/017a1434-117a-4d6f-8842-3fa81e0427d4",
    "eventType": "nl.assistanceonline.webhooks.orderstatuschanged.v1",
    "resources": {
    }
}

Een ingesteld filter van een webhook (let op escaping bij het configureren

{% if newStatus == "Assigned" %}true{% else %}false{% endif %}

Dit template levert true bij het voorbeeld bericht op. Het bericht zal dus worden verzonden.

Bij andere waarden voor newStatus wordt false geleverd en zal het bericht niet verzonden worden.

Bij het afhandelen van een event in Assistance Online door een webhook, worden eerst alle resources opgehaald, waarna het filter wordt toegepast.

Instellen IncludedResourceNames

Bij het configureren van een webhook kan je aangeven welke resources er met het bericht meegestuurd moeten worden. Als je dit veld leeg laat, zullen er geen resources meegestuurd worden.

  • No labels