Het is belangrijk dat Evesto schaalbaar en veilig blijft. Eventuele integraties met externe systemen mogen deze principes niet in gevaar brengen. Een webhook is een van die opties voor systeemintegratie.


Beveiliging


Om te voorkomen dat gevoelige gegevens over een onbeveiligde verbinding worden verzonden, wordt het niet aanbevolen om gedetailleerde gegevens te versturen. Een betere oplossing is om alleen de gegevens te verzenden die nodig zijn om de details via de API op te halen.


Prestaties

Een extern systeem dat niet goed presteert, kan mogelijk een probleem vormen voor het EVesto-systeem, omdat dit kan resulteren in een langdurige HTTP-oproep. Dit is niet wenselijk. Dit is een van de redenen waarom de time-out voor de webhook-ontvanger slechts 5 seconden is. Een ander prestatieprobleem kan ontstaan bij het verzenden van grote hoeveelheden gegevens.


Cloud events

De hierboven genoemde problemen worden opgelost door gebruik te maken van cloud events. Dit betekent in feite dat een webhook-ontvanger alleen de gegevens krijgt die relevant zijn voor het gebeurtenistype. In elk cloud event is een verwijzing beschikbaar naar de Longship API om alle details voor het onderwerp van het gebeurtenistype op te halen.


Expected response200-299
Request timeout5 seconds
Retry3 times with an exponential back-off up to 15 seconds


Een voorbeeld van een cloud event:


{  "specversion": "1.0",  "id": "3b711591-b724-4d5a-931c-20ce3fe3ab0a",  "type": "SessionUpdate",  "subject": "34B20B7B66234F5794F59D97F7D1A386",  "time": "2022-04-05T11:15:12.9670186Z",  "source": "https://api.longship.io/v1/sessions",  "datacontenttype": "application/json",  "data": {    "totalenergyinkwh": 23.1543,    "totalduration": "01:19:04.56",    "totalcosts": 10.87  }
}
JavaScript

Het 'subject' is de ID die kan worden gebruikt om alle details uit de Longship API op te halen. De 'source' verwijst naar de specifieke eindpunt. In dit voorbeeld zou dat gecombineerd worden in de volgende URL:


https://api.longship.io/v1/sessions/34B20B7B66234F5794F59D97F7D1A386 

Architectuur voor externe systemen

Om ervoor te zorgen dat een reactie op het webhook-verzoek zo snel mogelijk wordt uitgevoerd, moet de feitelijke verwerking van de gebeurtenis asynchroon worden gedaan. Een implementatie kan zijn om de gebeurtenis op te slaan in een wachtrij-opslagsysteem.



Zodra de gebeurtenis is opgeslagen in de wachtrij, kan een andere service de Longship API gebruiken om de details op te halen en de gegevens te verwerken voor zijn zakelijke behoeften.