Öffentliche API-Webhooks

Öffentliche API-Webhooks sind ein neuer Dienst, der es ermöglicht, Benachrichtigungen über Änderungen in deinem Account zu erhalten, wodurch die Notwendigkeit einer ständigen Abfrage durch die öffentliche API von Rentman entfällt.

Im Wesentlichen sind Webhooks einfach URLs, die von Rentman aufgerufen werden, wenn etwas in deinem Account hinzugefügt, geändert oder gelöscht wird.

Man kann sie sich als Push-Benachrichtigungen für jedes Ereignis in deinem Account vorstellen - sei es das Hinzufügen eines neuen Projekts, die Bearbeitung eines Kontakts oder das Löschen einer Seriennummer. Wenn eines dieser Ereignisse eintritt, sendet Rentman einen Payload an die URL, die du festgelegt hast. Dieser Payload enthält Details über die hinzugefügte, geänderte oder gelöschte Entität, zusammen mit Hinweisen, wie man weitere Informationen von der öffentlichen API abrufen kann.

Hinweis: Die Verwendung von Webhooks erfordert technische Programmierkenntnisse und Erfahrung. Wenn du nicht über diese Kenntnisse verfügst, empfehlen wir dir, dich an einen externen Entwickler oder ein Unternehmen zu wenden. Bitte beachte, dass unser Support-Team in diesem Bereich nicht geschult ist und keine Unterstützung bei der Webhook-Implementierung leisten kann.

Öffentliche API-Webhooks einrichten

  1. Um Webhooks zu altivieren, öffne das Screenshot 2023-11-23 at 15.56.05.png Konfigurationsmodul und wähle "Erweiterungen"
  2. Scrolle nach unten zum Abschnitt Webhooks und klicke auf “Verbinden”image-20231120-112332.png
  3. Das folgende Pop-up-Fenster wird daraufhin angezeigt:image-20231120-112310.pngHier musst du die URL angeben und bekommst ein Token. Im Feld URL gibst du an, welche URL von Rentman aufgerufen werden soll, wenn etwas in deinem Account erstellt, geändert oder gelöscht wird. Der Token wird stattdessen für die Generierung eines Digests verwendet, der auf Kundenseite verwendet werden sollte, um zu überprüfen, ob die Nachricht von Rentman stammt.
  4. Klicke auf “Speichern” und schließe das Pop-up, um Webhooks zu aktivieren.

Öffentliche API-Webhooks richtig nutzen

Nachdem alle oben genannten Schritte befolgt wurden, ruft Rentman die angegebene URL auf, wenn in deinem Account etwas hinzugefügt, geändert oder gelöscht wird. In diesem Fall werden die Nachrichten an folgende Adresse gesendet https://mywebhookurl.com

Jede Nachricht hat ein einheitliches Format. Bei der Erstellung oder Aktualisierung sehen die Meldungen wie folgt aus:

{
"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"
}
Komplexere Artikel, wie z. B. Unterprojekte oder geplante Materialgruppen, können umfangreichere Nachrichtenstrukturen haben, die auch Verweise auf übergeordnete Artikel enthalten.
{
"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"
}
Wenn ein Artikel gelöscht wird, enthält die Nachricht leicht abweichende Angaben im Abschnitt Artikel:
{
"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"
}

Die Payload enthält immer folgende Komponenten:

  • account - Name des Kontos, von dem die Nachricht stammt
  • user - ID und öffentlicher API-Verweis auf den Mitarbeiter, der die Änderung initiiert hat. Kann für Aktionen, die nicht von Nutzern durchgeführt werden, null sein, z. B. wenn ein Dokument digital signiert wird.
  • eventType - erstellen, aktualisieren oder löschen
  • itemType - Typ des Artikels, der erstellt, aktualisiert oder gelöscht wurde. Mögliche Artikeltypen sind:
Mögliche itemTypes
  • Appointment, AppointmentCrew, Accessory, StockLocation, CrewAvailability, InvoiceLine, Contact, Contract, ProjectCost, SerialNumber, Factuur, File, Folder, ProjectFunction, ProjectFunctionGroup, TimeRegistrationActivity, Ledger, Subrental, SubrentalEquipmentGroup, SubrentalEquipment, Equipment, ProjectEquipmentGroup, Crew, Quotation, ContactPerson, ProjectCrew, ProjectVehicle, ProjectEquipment, Project, ProjectRequest, ProjectRequestEquipment, CrewRate, CrewRateFactor, Reapair, WarehouseScan, WarehouseScanner, EquipmentSetContent, Status, Subproject, TaxClass, ProjectType, TimeRegistartion, Vehicle, StockMovement

Rentman-Tipp: Du kannst den "ref"-Wert anhängen, um den Nutzer, der den Webhook ausgelöst hat, leicht abzufragen, indem du ihn einfach an die Basis-API-URL https://api.rentman.net anhängst. Das Gleiche kannst du mit dem "ref"-Wert jedes Artikels in der Payload tun.

  • items - Bei Erstellung und Aktualisierung enthält die Nachricht ein Array von Objekten, wobei jedes Objekt einen erstellten/aktualisierten Artikel darstellt. Das Objekt enthält die ID des Artikels, einen Verweis auf die öffentliche API und ein verschachteltes Objekt derselben Struktur, das auf das übergeordnete Objekt verweist, falls ein solches existiert. Wenn es kein übergeordnetes Objekt gibt, ist der Wert von parent gleich null. Bei Löschungen ist items ein Array von Ganzzahlen, das die IDs der Artikel enhält, die gelöscht wurden.
  • eventDate - Datum und Uhrzeit, wann das Ereignis stattgefunden hat

Überprüfung der Authentizität des Webhook-Payloads

/* 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
}

Was mache ich, wenn Webhook-URLs nicht mehr reagieren?

Wenn deine Webhook-URL nicht mehr reagiert, entweder aufgrund einer falschen Einrichtung oder aufgrund von Problemen mit deinem Endpunkt, hat Rentman ein Benachrichtigungssystem implementiert, um das Problem zu lösen.

Was bedeuten diese Benachrichtigungen?

"Webhooks-Zustellung fehlgeschlagen"

image (1).png

Wenn dein Webhook-Endpunkt kontinuierlich nicht antwortet, erhältst du bei jedem 10. Fehler eine Benachrichtigung, bis zu 40 (z. B. 10, 20, 30 und 40 Fehler). Bitte beachte, dass diese Fehlschläge aufeinander folgen müssen; eine einzige erfolgreiche Zustellung setzt den Fehlerzähler auf Null zurück.

"Webhooks-Zustellung aufgrund kontinuierlicher Ausfälle deaktiviert"

image (2).png

Nach 50 aufeinanderfolgenden Fehlversuchen deaktivieren wir deinen Webhook-Endpunkt, um die Zustellung von Webhooks an eine nicht funktionierende URL zu vermeiden. Zu diesem Zeitpunkt erhältst du eine Benachrichtigung, die dich über die Deaktivierung informiert.

Diese Benachrichtigungen sind nur für Mitarbeiter mit Zugriff auf das settingsKonfigurationsmodul. Stelle sicher, dass die entsprechenden Mitarbeiter in deinem Team Zugang zu diesem Modul haben, um informiert zu bleiben und eventuelle Probleme umgehend zu beheben.

Um diese Probleme zu beheben, kannst du Webhooks wieder aktivieren, indem du die URL im Abschnitt Webhooks im settings Konfigurationsmodul aktualisierst, so wie du es bei der erstmaligen Aktivierung von Webhooks tun würdest

[GIF here]

Rentman Tipp: Rentman-Tipp: Bitte stelle sicher, dass du eine gültige und funktionierende URL angibst, um eine ununterbrochene Webhook-Zustellung zu gewährleisten.

War dieser Beitrag hilfreich?
1 von 1 fanden dies hilfreich

Beiträge in diesem Abschnitt