n8n
In n8n ontvangt de node "Webhook" gebeurtenissen van hier en roept de node "HTTP Request" de API aan. Dat werkt in n8n Cloud en zelf gehost, zolang het webhookadres via HTTPS vanaf internet bereikbaar is.
Gebeurtenissen ontvangen en de handtekening controleren:
- Maak een workflow met de node "Webhook", methode POST, en kopieer de "Production URL".
- Voeg het adres toe onder Instellingen, Webhooks en noteer het secret, het wordt maar één keer getoond.
- Zet in de webhooknode onder "Options" "Raw Body" aan en koppel er een "Code"-node aan met het voorbeeld hieronder. Bij zelf hosten moet
NODE_FUNCTION_ALLOW_BUILTIN=cryptozijn ingesteld.
const crypto = require('crypto');
const secret = 'whsec_YOUR_SECRET';
const header = $json.headers['x-horaka-signature'] ?? '';
const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
const body = Buffer.from($binary.data.data, 'base64').toString('utf8');
const expected = crypto
.createHmac('sha256', secret)
.update(`${parts.t}.${body}`)
.digest('hex');
if (expected !== parts.v1) {
throw new Error('Signature does not match');
}
return [{ json: JSON.parse(body) }];
De timer bedienen vanuit een workflow:
- Maak onder Instellingen, API en apparaten een apparaat of een token aan met het recht "Trigger".
- Maak in n8n een credential van het type "Header Auth": naam
Authorization, waardeBeareren je token. - Voeg de node "HTTP Request" toe en vul de waarden hieronder in.
Method: POST
URL: https://api.horaka.com/v1/track/toggle
Authentication: Generic Credential Type, Header Auth
Send Body: on, Body Content Type JSON
JSON: {"project": "PROJECT"}