TotalApp Dökümanlar

Webhook'lar

TotalApp olayları gerçek zamanlı olarak uygulamanıza iletin. Yeni çalışan eklendiğinde, sipariş oluşturulduğunda veya proje durumu değiştiğinde anında bildirim alın.

Genel Bakış

Webhook'lar, TotalApp'teki belirli olaylar gerçekleştiğinde belirlediğiniz URL'e HTTP POST isteği gönderir. Polling yerine webhook kullanarak sunucu yükünü azaltın ve anlık tepkisellik kazanın.

Gerçek Zamanlı Olaylar

Olay gerçekleşir gerçekleşmez saniyeler içinde POST isteği alın. Polling döngülerine gerek yok.

HMAC İmza Doğrulama

Her istek X-TotalApp-Signature başlığı ile imzalanır. İsteğin gerçekten TotalApp'ten geldiğini doğrulayın.

Otomatik Yeniden Deneme

Endpoint'iniz 2xx dışı yanıt verirse TotalApp üstel geri çekilme ile 5 kez yeniden dener.

Olay Filtreleme

Almak istediğiniz olayları seçin. Gereksiz trafiği filtreleyerek yalnızca ilgilendiğiniz verileri işleyin.

Webhook Oluşturma

1. Ayarlar → Geliştirici
2. Webhook'lar
3. Yeni Webhook
4. URL & Olayları Seç
5. Kaydet

Webhook URL'si HTTPS olmalıdır. HTTP URL'leri test amaçlı kabul edilir ancak production'da önerilmez.

Desteklenen Olaylar

İnsan Kaynakları

OlayAçıklama
employee.createdYeni personel oluşturuldu
employee.updatedPersonel bilgisi güncellendi
leave.approvedİzin talebi onaylandı
leave.rejectedİzin talebi reddedildi

Proje Yönetimi

OlayAçıklama
project.createdYeni proje oluşturuldu
task.completedGörev tamamlandı
task.assignedGörev bir kullanıcıya atandı

Finans

OlayAçıklama
invoice.createdYeni fatura oluşturuldu
invoice.paidFatura ödendi
expense.submittedHarcama talebi gönderildi

İmza Doğrulama

Gelen webhook isteklerini doğrulamak için webhook sırrını kullanın:

const crypto = require('crypto'); function verifyWebhook(payload, signature, secret) { const expected = crypto .createHmac('sha256', secret) .update(payload) .digest('hex'); return `sha256=${expected}` === signature; } // Express.js örneği app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => { const sig = req.headers['x-totalapp-signature']; if (!verifyWebhook(req.body, sig, process.env.WEBHOOK_SECRET)) { return res.status(401).json({ error: 'Invalid signature' }); } const event = JSON.parse(req.body); // Olayı işle res.json({ received: true }); });

Önemli

Ham istek gövdesini (raw body) imzalamak için kullanın. JSON.parse sonrası stringify edilmiş veriyi kullanmayın — boşluk farklılıkları imzayı geçersiz kılar.

Sık Sorulan Sorular

Endpoint'im zaman aşımına uğrarsa ne olur?
TotalApp 30 saniyelik zaman aşımı uygular. Uzun işlemler için isteği hemen kabul edip arka planda işleyin. Zaman aşımı da başarısız teslim sayılır ve yeniden deneme tetiklenir.
Kaç webhook endpoint'i ekleyebilirim?
Starter planında 3, Basic'te 10, Standard ve üzerinde sınırsız webhook endpoint'i ekleyebilirsiniz. Enterprise planında her endpoint farklı olaylar için yapılandırılabilir.
Webhook günlükleri ne kadar süre saklanır?
Son 30 günün teslim günlükleri Ayarlar → Geliştirici → Webhook Günlükleri bölümünde görüntülenebilir. Başarılı ve başarısız teslimatlar, yanıt gövdesi ve gecikme değerleriyle birlikte listelenir.