Openbare API-webhooks

Public API Webhooks is een nieuwe dienst waarmee je notificaties kunt ontvangen over wijzigingen in je account, waardoor je niet meer voortdurend de Rentman Public API hoeft te gebruiken.

Webhooks zijn simpelweg URL's die door Rentman worden aangeroepen wanneer er iets in je account wordt toegevoegd, gewijzigd of verwijderd.

Je kan het zien als een pushmelding voor elke gebeurtenis in je account, of het nu gaat om het toevoegen van een nieuw project, het bewerken van een contactpersoon of het verwijderen van een exemplaar. Wanneer een van deze gebeurtenissen plaatsvindt, zal Rentman een payload posten op de ingestelde URL. Deze payload bevat details over de toegevoegde, gewijzigde of verwijderde onderdeel, samen met tips over hoe je meer informatie uit de openbare API ophaalt.

Let op: Het gebruik van webhooks vereist technische programmeervaardigheden en ervaring. Bezit je niet over deze vaardigheden, dan adviseren we om hulp te zoeken bij een externe ontwikkelaar of bedrijf. Houd er rekening mee dat ons support team niet is opgeleid op dit gebied en geen hulp kan bieden bij de implementatie van de webhook.

Openbare API-Webhooks instellen

  1. Ga naar de Screenshot 2023-11-23 at 15.56.05.png Configuratiemodule en selecteer "Extensies" om webhooks te activeren
  2. Scroll naar de Webhooks sectie en klik op "Verbinden"image-20231120-112332.png
  3. Onderstaande pop-up verschijnt:
    Schermafbeelding 2023-11-29 om 14.48.18.png
    Hier geef je de URL op en krijg je een token. In het URL-veld specificeer je welke URL door Rentman wordt aangeroepen als er iets in je account wordt aangemaakt, gewijzigd of verwijderd. Het token zal in plaats daarvan worden gebruikt voor het genereren van een samenvatting die aan de clientzijde moet worden gebruikt om te verifiëren dat het bericht afkomstig is van Rentman.
  4. Klik op “Opslaan” en sluit het pop-upscherm om Webhooks te activeren

Openbare API-Webhooks beheren

Heb je alle bovenstaande stappen gevolgd? Dan zal Rentman, wanneer er iets wordt toegevoegd, gewijzigd of verwijderd in je account, de opgegeven URL aanroepen. In dit geval worden berichten verzonden naar https://mywebhookurl.com

Elk bericht volgt dezelfde indeling. Voor nieuwe aanmaken of updates zien berichten er als volgt uit:

{
"account": "youraccountname",
"user": {
"itemType": "Crew",
"id": 33,
"ref": "/crew/33"
},
"eventType": "create",
"itemType": "Contact",
"items": [
{
"id": 12014,
"ref": "/contacts/12014",
"parent": null
}
],
"eventDate": "2023-02-02T12:07:01+01:00"
}
Complexere zaken, zoals subprojecten of geplande materiaalgroepen, kunnen een uitgebreidere berichtstructuur hebben, met verwijzingen naar bovenliggende items.
{
"account": "youraccountname",
"user": {
"itemType": "Crew",
"id": 33,
"ref": "/crew/33"
},
"eventType": "update",
"itemType": "SerialNumber",
"items": [
{
"id": 8367,
"ref": "/serialnumbers/8367",
"parent": {
"id": 12792,
"itemType": "Equipment",
"ref": "/equipment/12792"
}
}
],
"eventDate": "2023-02-02T12:03:25+01:00"
}
Wanneer een item wordt verwijderd, bevat het bericht iets andere details in de items sectie:
{
"account": "youraccountname",
"user": {
"itemType": "Crew",
"id": 33,
"ref": "/crew/33"
},
"eventType": "delete",
"itemType": "ContactPerson",
"items": [
10,
31
],
"eventDate": "2023-02-02T12:08:00+01:00"
}

De payload bevat altijd deze componenten:

  • account - accountnaam waarvan het bericht afkomstig is
  • user - id en Public API-verwijzing naar de medewerker die de wijziging heeft aangebracht. Acties niet door gebruikers uitgevoerd, krijgen 'null' mee. Bijvoorbeeld wanneer een document digitaal wordt ondertekend
  • eventType - aanmaken, bijwerken of verwijderen
  • itemType - type van het item dat is gemaakt, bijgewerkt of verwijderd. Mogelijke itemtypen zijn:
Mogelijke itemTypes
  • Appointment (Afspraak), AppointmentCrew (Afspraak personeel), Accessory (Accessoire), StockLocation (Voorraadlocatie), CrewAvailability (Beschikbaarheid Personeel), InvoiceLine (Factuurregel), Contact, Contract, ProjectCost (Projectkosten), SerialNumber (Exemplaar), Factuur, File (Bestand), Folder (Map), ProjectFunction (Project Functie), ProjectFunctionGroup (Project Functie Groep), TimeRegistrationActivity (Tijdsregistratie Activiteit), Ledger (Grootboek), Subrental (Inhuur), SubrentalEquipmentGroup (Inhuur Materiaalgroep), SubrentalEquipment (Inhuurmateriaal), Equipment (Materiaal), ProjectEquipmentGroup (Project materiaalgroep), Crew (Personeel), Quotation (Offerte), ContactPerson (Contactpersoon), ProjectCrew (Projectpersoneel), ProjectVehicle (Projectvoertuig), ProjectEquipment (Projectmateriaal), Project, ProjectRequest (Projectaanvraag), ProjectRequestEquipment (Projectaanvraag Materiaal), CrewRate (Personeelstarief), CrewRateFactor (Personeelstarieffactor), Repair (Reparatie), WarehouseScan (Magazijnscan), WarehouseScanner (Magazijnscanner), EquipmentSetContent (Materiaalcombinatie Inhoud), Status, Subproject, TaxClass (BTW-tarief), ProjectType, TimeRegistration (Tijdsregistratie), Vehicle (Voertuig), StockMovement (Voorraadbeweging)

Tip van Rentman: Je kunt de “ref”-waarde toevoegen om eenvoudig de gebruiker op te vragen die de webhook heeft geactiveerd, door deze simpelweg toe te voegen na de basis-API-URL https://api.rentman.net. Je kan hetzelfde doen met de “ref”-waarde van elk item in de payload.

  • items - Voor creaties en updates bevat het bericht een reeks objecten, waarbij elk object één gemaakt/bijgewerkt item vertegenwoordigt. Het object bevat de ID van het item, een openbare API-referentie en ook een genest object met dezelfde structuur, verwijzend naar de parent, als die bestaat. Als er geen parent is, is de waarde van parentgelijk aan null. Voor verwijderingen is items een reeks van hele getallen, met daarin de ID's van items die zijn verwijderd.
  • eventDate - datum en tijd waarop het event heeft plaatsgevonden

Validatie van de authenticiteit van de webhook-payload

/* example what a Digest header looks:
Digest: sha512=509072eee2c11804287bf807307ed360892053dde89c15ddacd9daa24c63c492963c089d54677598df4422f7d18cbd6a8ebca689841754e8ca44aee1054ddf0c
*/

// this is the full request body
$raw_body = file_get_contents('php://input');

//split value on '='
$digestParts = explode('=', $_SERVER['HTTP_DIGEST']);
$algo = digestParts[0];
$digest = digestParts[1];

// This is known by the client and Rentman only
$token= 'some_secret_key';
$clientGeneratedDigest = hash_hmac($algo, $raw_body, $token, false);

if($digest === $clientGeneratedDigest){
// The webhook call was made by Rentman
}
else{
// The webhook call was not made by Rentman
}

Wat moet ik doen als webhook-URL's niet meer reageren?

Rentman heeft een meldingssysteem geïmplementeerd voor wanneer webhook-URL's niet meer reageren vanwwege een onjuiste instelling of problemen met het eindpunt.

Wat houden deze meldingen in:

"Webhook-levering mislukt"

image (1).png

Wanneer een webhook-eindpunt voortdurend niet reageert, ontvang je meldingen bij elke 10e fout, tot maximaal 40 (bijvoorbeeld 10, 20, 30 en 40 fouten). Houd er rekening mee dat deze fouten opeenvolgend moeten zijn; één succesvolle levering reset het aantal fouten naar nul.

"Webhook-levering uitgeschakeld vanwege voortdurende fouten"

image (2).png

Na 50 opeenvolgende mislukte pogingen schakelen we het webhook-eindpunt uit om te voorkomen dat webhooks worden geleverd aan een niet-functionele URL. Je ontvangt dan een melding waarin je wordt geïnformeerd over de deactivering.

Deze meldingen zijn alleen zichtbaar voor medewerkers met toegang tot de settingsConfiguratiemodule. Zorg ervoor dat de juiste medewerkers toegang hebben tot deze module, zodat ze op de hoogte blijven en eventuele problemen snel op kunnen lossen.

Los problemen op door webhooks opnieuw in te schakelen. Werk de URL bij in het gedeelte Webhooks in de settings Configuratiemodule, net zoals je dat doet wanneer je webhooks voor het eerst inschakelt.

[GIF here]

Rentman Tip: Geef een geldige en werkende URL op om een ​​ononderbroken levering van de webhook te garanderen.  

Was dit artikel nuttig?
Aantal gebruikers dat dit nuttig vond: 1 van 1

Artikelen in deze sectie