Skip to Content
Elido is in closed beta — APIs are stable but rate-limits and quotas may change before GA. Request access →
Webhook'lar

Webhook’lar

Webhook’lar, sistemlerinizin Elido’daki değişikliklere yoklama (polling) yapmadan tepki vermesini sağlar. İki uç nokta türü vardır:

  • Olay uç noktaları: belirli olay türlerine (link.created, member.invited vb.) abone olun.
  • SIEM uç noktaları: firehose; çalışma alanındaki her olay ve audit.event yükleri olarak tam denetim günlüğü akışı.

Uç nokta oluşturma

Settings → Webhooks üzerinden ya da API ile:

curl -X POST https://api.elido.app/v1/webhooks/workspaces/1/webhooks \ -H "Authorization: Bearer $ELIDO_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://hooks.example.com/elido", "events": ["link.created", "link.deleted"], "kind": "event" }'

Yanıt, yalnızca bir kez gösterilen bir secret içerir:

{ "endpoint": { "id": 7, "url": "...", "events": [...] }, "secret": "whsec_a1b2c3d4..." }

Gizli anahtarı şimdi kaydedin. Bir daha asla döndürülmez. Gelen teslimatlardaki imzaları doğrulamak için kullanın.

İmzaları doğrulama

Her teslimat şunları taşır:

X-Elido-Signature: v1=4f8a... X-Webhook-Signature: v1=4f8a... # backward-compatible alias X-Webhook-Timestamp: 1735689600 X-Webhook-Event: link.created X-Webhook-Delivery: 12345

HMAC-SHA256(secret, "{timestamp}.{raw_body}") hesaplayın ve v1= sonrasındaki değerle sabit zamanlı karşılaştırın. 5 dakikadan eski teslimatları reddedin (now - timestamp > 300).

import { createHmac, timingSafeEqual } from "node:crypto"; function verify(secret: string, headers: Headers, rawBody: string) { const sig = headers.get("X-Webhook-Signature")?.replace(/^v1=/, ""); const ts = headers.get("X-Webhook-Timestamp"); if (!sig || !ts) return false; if (Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false; const expected = createHmac("sha256", secret) .update(`${ts}.${rawBody}`) .digest("hex"); return timingSafeEqual(Buffer.from(sig), Buffer.from(expected)); }

Yeniden denemeler

Başarısız teslimatlar (2xx olmayan her şey) üstel geri çekilmeyle yeniden denenir: 1 dakika, 5 dakika, 15 dakika. 3 denemeden sonra teslimat failed olarak işaretlenir.

Başarısız (veya zaten teslim edilmiş) bir denemeyi Webhooks → uç nokta → Retry üzerinden ya da şu komutla elle yeniden başlatabilirsiniz:

curl -X POST \ https://api.elido.app/v1/webhooks/workspaces/1/webhooks/7/deliveries/12345/retry \ -H "Authorization: Bearer $ELIDO_TOKEN"

SIEM modu

SIEM türündeki bir uç nokta, olay başına abonelik filtresinden bağımsız olarak çalışma alanındaki her olayı alır. Buna hem operasyonel olaylar (link.created, member.invited, …) hem de denetim günlüğü firehose’u (audit.event) dahildir.

Denetimle ilgili her eylem (BAA imzalandı, üye rolü değişti, API anahtarı iptal edildi, …) bir audit.event zarfı yayar:

{ "type": "audit.event", "workspace_id": 1, "data": { "kind": "member.role_changed", "target_type": "member", "target_id": 42, "actor_user_id": 7, "ip": "1.2.3.4", "user_agent": "...", "metadata": { "from": "viewer", "to": "admin" }, "recorded_at": "2026-05-01T12:00:00Z" }, "timestamp": "2026-05-01T12:00:00Z" }

SIEM alım katmanınız (Splunk HEC, Datadog Logs, özel bir aktarıcı) kendi yerel biçimine çevirmekten sorumludur.

Kullanılabilir olay türleri

OlayNe zaman
link.createdYeni bir bağlantı oluşturulduğunda
link.updatedBir bağlantının hedefi, slug’ı veya kuralları değiştiğinde
link.deletedBir bağlantı arşivlendiğinde veya kalıcı olarak silindiğinde
workspace.createdYeni bir çalışma alanı hazırlandığında
workspace.updatedÇalışma alanı ayarları değiştiğinde
member.invitedBiri davet edildiğinde
member.removedBir üye kaldırıldığında (veya ayrıldığında)
audit.eventHerhangi bir denetim günlüğü girdisi; yukarıdaki SIEM moduna bakın

Ayrıca gönderilenler (yükler için yardım merkezi webhook kılavuzuna  bakın): link.expired, link.cap_reached, link.broken, member.role_changed, domain.verified, domain.ssl_failed, invitation.created, invitation.accepted, subscription.* ve usage.threshold_80 / usage.threshold_100.

Planlandı, bugün gönderilmez: tıklama başına olaylar, link.clicked.aggregated, conversion.recorded, threshold.exceeded, domain.tls_renewed ve qr.generated. Tıklama etkinliğini izlemek için analitik API’sini veya panoyu kullanın.