123456789101112131415161718// Outbound event dispatcher with isolated HMAC-SHA256 signature and delivery audit
export async function dispatchTenantWebhook(tenantId: string, triggerEvent: string, payload: Record<string, unknown>) {
const secret = getTenantSigningSecret(tenantId);
const bodyString = JSON.stringify({ event: triggerEvent, payload });
const signature = createHmac('sha256', secret).update(bodyString).digest('hex');
const res = await fetch(action.config.url, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-Vendora-Signature': 'sha256=' + signature },
body: bodyString,
});
await db.insert(auditLogs).values({
tenantId,
action: 'webhook:' + triggerEvent,
details: { status: [res.ok ? 'success' : 'failed'], statusCode: [res.status.toString()] },
});
}