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í
- Přejděte do Nastavení → Webhooks → + Webhook.
- 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
- Klikněte na Vytvořit.
Podporované události (15)
Time Entry (5)
| Událost | Popis |
|---|---|
time_entry.created | Nový záznam práce |
time_entry.updated | Úprava záznamu |
time_entry.deleted | Smazání záznamu |
time_entry.submitted | Odeslání ke schválení |
time_entry.approved | Schválení záznamu |
Invoice (4)
| Událost | Popis |
|---|---|
invoice.created | Nová faktura |
invoice.updated | Úprava faktury |
invoice.deleted | Smazání faktury |
invoice.sent | Odeslání faktury |
User (2)
| Událost | Popis |
|---|---|
user.created | Nový člen |
user.removed | Odebrání člena |
Project (2)
| Událost | Popis |
|---|---|
project.created | Nový projekt |
project.updated | Úprava projektu |
Client (2)
| Událost | Popis |
|---|---|
client.created | Nový 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
- V Zapier vytvořte nový Zap a jako trigger zvolte "Webhooks by Zapier" → "Catch Hook".
- Zapier vám vygeneruje URL — zkopírujte ji.
- V Můj Výkaz jděte do Nastavení → Webhooks → + Webhook, vložte URL a vyberte události.
- V Zapier přidejte akci (Slack zpráva, Google Sheets řádek, email...).
Make (Integromat)
- V Make vytvořte nový scénář a přidejte modul "Webhooks" → "Custom webhook".
- Make vám vygeneruje URL — zkopírujte ji.
- V Můj Výkaz jděte do Nastavení → Webhooks → + Webhook, vložte URL a vyberte události.
- Klikněte Test ping — Make zachytí strukturu dat a můžete přidat další moduly.
n8n
- V n8n přidejte node "Webhook" a nastavte HTTP Method na POST.
- Spusťte workflow — n8n zobrazí URL (např. http://vas-server:5678/webhook/xyz).
- V Můj Výkaz jděte do Nastavení → Webhooks → + Webhook, vložte URL a vyberte události.
- 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.