Přeskočit na hlavní obsah

Webhooks

Webhooks odesílají HTTP POST požadavky na vaši URL při každé důležité události v MujVykaz. Slouží k integraci se Zapier, Make, n8n nebo vlastními systémy.

Nastavení

  1. Přejděte do NastaveníWebhooks+ Webhook.
  2. Vyplňte:
    • URL — endpoint, kam se budou odesílat požadavky
    • Secret — tajný klíč pro HMAC podpis (automaticky vygenerovaný)
    • Události — vyberte, které události chcete odebírat
  3. Klikněte na Vytvořit.

Podporované události (15)

Time Entry (5)

UdálostPopis
time_entry.createdNový záznam práce
time_entry.updatedÚprava záznamu
time_entry.deletedSmazání záznamu
time_entry.submittedOdeslání ke schválení
time_entry.approvedSchválení záznamu

Invoice (4)

UdálostPopis
invoice.createdNová faktura
invoice.updatedÚprava faktury
invoice.deletedSmazání faktury
invoice.sentOdeslání faktury

User (2)

UdálostPopis
user.createdNový člen
user.removedOdebrání člena

Project (2)

UdálostPopis
project.createdNový projekt
project.updatedÚprava projektu

Client (2)

UdálostPopis
client.createdNový klient
client.updatedÚprava klienta

HTTP hlavičky

Každý webhook požadavek obsahuje:

X-MujVykaz-Event: time_entry.created
X-MujVykaz-Signature: sha256=abc123...
X-MujVykaz-Delivery: 550e8400-e29b-41d4-a716-446655440000
Content-Type: application/json

HMAC-SHA256 ověření

Každý požadavek je podepsán vaším secret klíčem. Ověření v kódu:

Node.js

const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
const expected = 'sha256=' +
crypto.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}

Python

import hmac
import hashlib

def verify_signature(payload: bytes, signature: str, secret: str) -> bool:
expected = 'sha256=' + hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected)

Retry politika

  • Pokud váš endpoint neodpoví 200–299, systém zkusí doručit znovu.
  • Celkem 3 pokusy s exponenciálním odstupem.
  • Po 3 neúspěšných pokusech se doručení přeskočí.

Napojení na Zapier, Make a n8n

Zapier

  1. V Zapier vytvořte nový Zap a jako trigger zvolte "Webhooks by Zapier" → "Catch Hook".
  2. Zapier vám vygeneruje URL — zkopírujte ji.
  3. V Můj Výkaz jděte do Nastavení → Webhooks → + Webhook, vložte URL a vyberte události.
  4. V Zapier přidejte akci (Slack zpráva, Google Sheets řádek, email...).

Make (Integromat)

  1. V Make vytvořte nový scénář a přidejte modul "Webhooks" → "Custom webhook".
  2. Make vám vygeneruje URL — zkopírujte ji.
  3. V Můj Výkaz jděte do Nastavení → Webhooks → + Webhook, vložte URL a vyberte události.
  4. Klikněte Test ping — Make zachytí strukturu dat a můžete přidat další moduly.

n8n

  1. V n8n přidejte node "Webhook" a nastavte HTTP Method na POST.
  2. Spusťte workflow — n8n zobrazí URL (např. http://vas-server:5678/webhook/xyz).
  3. V Můj Výkaz jděte do Nastavení → Webhooks → + Webhook, vložte URL a vyberte události.
  4. Přidejte další n8n nody pro zpracování dat (IF podmínka, Slack, email, HTTP request...).

Test ping

Po vytvoření webhooku klikněte na Test ping — systém odešle testovací požadavek na vaši URL a zobrazí odpověď.

tip

Při vývoji použijte služby jako webhook.site nebo RequestBin pro testování bez vlastního serveru.