> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook

> HTTP tabanlı webhook uç noktalarına tek connection ile güvenli çağrı gönderimi yapar. HTTP/REST üzerinden dış servislere güvenli veri gönderimi ve bildirim gerçekleştirebilir

## Genel Bakış

<AccordionGroup>
  <Accordion title="Amacı Nedir?">
    <CardGroup cols={1}>
      <Card title="Merkezi Bağlantı Yönetimi" icon="settings">
        Webhook Connection (Bağlantı) tanımını merkezi hale getirerek tüm Integration Flow ve Connector adımlarının aynı HTTP uç noktasını tutarlı şekilde çağırmasını sağlar
      </Card>

      <Card title="Yapılandırma Hatası Azaltma" icon="shield">
        HTTP metodunu, URL'yi ve güvenlik başlıklarını tek noktadan yöneterek sürüm geçişlerinde yapılandırma hatalarını azaltır
      </Card>

      <Card title="Ortam Bazlı Yönetim" icon="layers">
        Ortam bazlı bağlantı parametreleri sayesinde Development/Test/Production uç noktalarını tek connection içinde ayırır
      </Card>

      <Card title="Hızlı Devreye Alma" icon="zap">
        Otomatik isim kontrolü, environment dağıtımı ve Test Connection çıktıları ile devreye alma süreçlerini hızlandırır
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Çalışma Prensibi">
    <CardGroup cols={2}>
      <Card title="Bağlantı Başlatma" icon="play">
        Integration Flow veya Connector içerisinden Webhook bağlantısı talep edildiğinde, sistem yapılandırılmış connection parametrelerini okur
      </Card>

      <Card title="Connection Pool Yönetimi" icon="database">
        HTTP istemcisi keep-alive destekli tekil bağlantıları kısa süreliğine reuse eder; açık bağlantı yoksa yeni bir TCP oturumu kurulur
      </Card>

      <Card title="Kimlik Doğrulama" icon="lock">
        Header sekmesinde tanımlanan Authorization, Api-Key veya benzeri Authentication başlıkları otomatik olarak isteğe eklenir
      </Card>

      <Card title="Veri İletişimi" icon="send">
        Seçilen HTTP metodu ile REST API çağrısı yapılır, yük (payload) Integration Flow adımının çıktısından alınır ve TLS üzerinden iletilir
      </Card>

      <Card title="Bağlantı Yönetimi" icon="settings">
        İstek tamamlandığında soket kapatılır veya HTTP keep-alive süresi içinde yeniden kullanılmak üzere bekletilir
      </Card>

      <Card title="Hata Yönetimi" icon="alert-circle">
        Bağlantı hatası, timeout veya authentication hatası durumunda hata Apinizer Message Service üzerinden kullanıcıya bildirilir ve deploymentResult loglarına yazılır
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kullanım Alanları">
    <CardGroup cols={2}>
      <Card title="Gözlemleme Platformları" icon="monitor">
        Apinizer loglarını Splunk, Datadog, Graylog gibi gözlemleme platformlarına REST webhook üzerinden aktarmak
      </Card>

      <Card title="CI/CD Bildirimleri" icon="rocket">
        CI/CD pipeline'larında başarılı deployment sonrası Slack veya Teams kanalını tetiklemek
      </Card>

      <Card title="Olay Yönlendirme" icon="workflow">
        Dış servislerden gelen olayları MongoDB/Redis yerine üçüncü taraf webhook API'lerine yönlendirmek
      </Card>

      <Card title="SaaS Entegrasyonları" icon="cloud">
        Hızlı prototiplerde dış SaaS servislerine POST/PUT çağrısı yapmak
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Teknik Özellikler ve Yetenekler

<AccordionGroup>
  <Accordion title="Temel Özellikler">
    <CardGroup cols={2}>
      <Card title="Dinamik HTTP Metot Seçimi" icon="send">
        EnumHttpRequestMethod listesindeki GET/POST/PUT/DELETE vb. tüm metotlar tek dropdown üzerinden seçilir.
      </Card>

      <Card title="URL Ve Payload Yönetimi" icon="link">
        Tam URL (fullUrl) alanı ile [https://host/path](https://host/path) biçimindeki uç nokta tanımlanır ve Integration Flow parametreleriyle birleştirilebilir.
      </Card>

      <Card title="Akıllı Header Sözlüğü" icon="list">
        Öntanımlı HTTP header adı/değer servisleri sayesinde otomatik tamamlama yapılır ve hatalı başlık girme riski düşer.
      </Card>

      <Card title="Ortam Bazlı Yapılandırma" icon="code-branch">
        Her ortam (Development, Test, Production) için ayrı connection parametreleri tanımlama imkanı.
      </Card>

      <Card title="Enable/Disable Kontrolü" icon="toggle-on">
        Connection'ı aktif veya pasif hale getirme (enable/disable toggle). Pasif durumda bağlantı kullanılamaz ancak yapılandırması saklanır.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İleri Düzey Özellikler">
    <CardGroup cols={2}>
      <Card title="Otomatik İsim Benzersizlik Kontrolü" icon="tag">
        Name alanı girilirken servis tabanlı nameExist kontrolü çalışır ve çakışmalar anında gösterilir.
      </Card>

      <Card title="Header Yönetiminde Otomatik Doğrulama" icon="check-circle">
        Eksik ad/değer bırakılan başlıklar kaydetme sırasında engellenir.
      </Card>

      <Card title="Global/Proje Taşıma" icon="share">
        List view üzerinden Move to Global aksiyonu ile connection tüm projeler tarafından kullanılabilir hale getirilir.
      </Card>

      <Card title="Connection Test Özelliği" icon="flask">
        "Test Connection" butonu ile bağlantı parametrelerini kaydetmeden önce doğrulama imkanı.
      </Card>

      <Card title="Export/Import Özelliği" icon="file-export">
        Connection yapılandırmasını ZIP dosyası olarak export etme. Farklı ortamlara (Development, Test, Production) import etme. Versiyon kontrolü ve yedekleme imkanı.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Bağlantı sağlığı, pool durumu ve performans metriklerini izleme.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parametreleri

<AccordionGroup>
  <Accordion title="Zorunlu Parametreler">
    <CardGroup cols={1}>
      <Card title="Name" icon="tag">
        **Açıklama:** Connection adı (benzersiz olmalı)\
        **Örnek Değer:** `Production_Webhook`\
        **Notlar:** Boşlukla başlamaz, özel karakter kullanılmaz
      </Card>

      <Card title="Environment" icon="layers">
        **Açıklama:** Connection'ın bağlı olacağı yayınlanmış ortam kimliği\
        **Örnek Değer:** `Prod-Blue`\
        **Notlar:** Environment listesi EnvironmentService tarafından doldurulur
      </Card>

      <Card title="HTTP Method" icon="send">
        **Açıklama:** Çağrıda kullanılacak HTTP metodu\
        **Örnek Değer:** `POST`\
        **Notlar:** GET/POST/PUT/DELETE/HEAD/OPTIONS/PATCH/TRACE desteklenir
      </Card>

      <Card title="Full URL" icon="link">
        **Açıklama:** Webhook uç noktasının tam URL'si\
        **Örnek Değer:** `https://hooks.partner.com/api/logs`\
        **Notlar:** HTTPS kullanılması önerilir, query parametreleri desteklenir
      </Card>

      <Card title="Timeout" icon="clock">
        **Açıklama:** İsteğin zaman aşımı süresi (sn)\
        **Örnek Değer:** `10`\
        **Notlar:** UI'da minimum 1 sn, model varsayılan 2 sn
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İsteğe Bağlı Parametreler">
    <CardGroup cols={1}>
      <Card title="Description" icon="file-text">
        **Açıklama:** Connection'ın amacı veya hedef sistemi açıklayan metin\
        **Varsayılan Değer:** -\
        **Önerilen Değer:** Kısa ve eyleme dönük açıklama
      </Card>

      <Card title="Header List" icon="list">
        **Açıklama:** Webhook çağrısında gönderilecek özel HTTP başlıkları\
        **Varsayılan Değer:** (Boş liste)\
        **Önerilen Değer:** Authorization: Bearer token gibi güvenlik başlıkları
      </Card>

      <Card title="Enabled" icon="power">
        **Açıklama:** Connection'ın aktif olup olmadığı\
        **Varsayılan Değer:** true\
        **Önerilen Değer:** Test aşamasında false, Production'da true
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout ve Connection Pool Parametreleri

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Açıklama:** TCP bağlantısının kurulması için bekleme süresi\
    **Varsayılan:** 2000\
    **Min:** 1000 | **Max:** 60000\
    **Birim:** milisaniye
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Açıklama:** HTTP isteğinin toplam yanıt süresi\
    **Varsayılan:** 2000\
    **Min:** 1000 | **Max:** 60000\
    **Birim:** milisaniye
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Açıklama:** Connection pool'daki maksimum bağlantı sayısı\
    **Varsayılan:** 0\
    **Min:** 0 | **Max:** 0\
    **Birim:** adet
  </Card>

  <Card title="Webhook Retry Delay" icon="repeat">
    **Açıklama:** Tekrar denemeler arasındaki bekleme (manuel akışlarla kullanılabilir)\
    **Varsayılan:** -\
    **Birim:** saniye
  </Card>
</CardGroup>

## Kullanım Senaryoları

<CardGroup cols={2}>
  <Card title="Operasyon Logları" icon="file-text">
    **Durum:** Gateway loglarını merkezi SIEM'e aktarma ihtiyacı\
    **Çözüm:** POST + JSON payload + Authorization header\
    **Beklenen Sonuç:** SIEM webhook'u her entegrasyon sonunda log kaydını alır
  </Card>

  <Card title="Deployment Bildirimi" icon="rocket">
    **Durum:** CI/CD pipeline sonrası ekipleri bilgilendirme\
    **Çözüm:** POST [https://hooks.slack.com/](https://hooks.slack.com/)... + ContentType: application/json\
    **Beklenen Sonuç:** Slack kanalında build/deployment sonucu paylaşılır
  </Card>

  <Card title="Üçüncü Taraf Alarmı" icon="bell">
    **Durum:** Threshold aşımlarında ITSM bileti açma\
    **Çözüm:** POST [https://api.servicenow.com/](https://api.servicenow.com/)... + API key\
    **Beklenen Sonuç:** ServiceNow üzerinde otomatik incident oluşur
  </Card>

  <Card title="SaaS Entegrasyonu" icon="cloud">
    **Durum:** CRM etkinliği tetiklemek\
    **Çözüm:** PUT [https://crm.partner.com/events/id](https://crm.partner.com/events/id) + Bearer token\
    **Beklenen Sonuç:** CRM kaydı güncellenir ve mutabakat akışı devam eder
  </Card>

  <Card title="Gözlemleme Webhook'u" icon="monitor">
    **Durum:** Health-check verisini Datadog Webhook API'sına gönderme\
    **Çözüm:** POST [https://api.datadoghq.com/api/v1/webhooks](https://api.datadoghq.com/api/v1/webhooks)\
    **Beklenen Sonuç:** Datadog metrik panosunda custom event açılır
  </Card>

  <Card title="Audit Trail" icon="shield">
    **Durum:** Her Integration Flow çalışmasını arşiv servisine bildirme\
    **Çözüm:** POST [https://audit.internal/api/event](https://audit.internal/api/event) + X-Trace-Id header\
    **Beklenen Sonuç:** Audit servisi çağrıyı kaydeder ve geri dönüş verir
  </Card>
</CardGroup>

## Connection Yapılandırma

### Yeni Webhook Entegrasyonu Oluşturma

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/webhook-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=8115e1e0e0e0bdf8f645f904e2ba2157" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/webhook-variable-new.png" />

#### Yapılandırma Adımları

<Steps>
  <Step title="Oluşturma Sayfasına Gitme">
    * Sol menüden **Connection → Webhook Entegrasyonu** bölümüne gidin.
    * Sağ üstteki **\[+ Create]** butonuna tıklayın.
  </Step>

  <Step title="Temel Bilgileri Girme">
    **Enable Status (Aktif Durumu):**

    * Toggle ile aktif/pasif durumu ayarlayın. Yeni connection'lar varsayılan olarak aktiftir.

    **Name (İsim) - Zorunlu:**

    * Örnek: `Production_Webhook`
    * Benzersiz isim girin, boşlukla başlamaz.
    * Sistem otomatik kontrol eder. Yeşil tik: kullanılabilir. Kırmızı çarpı: mevcut isim.

    **Description (Açıklama):**

    * Örnek: "Prod log forwarding webhook'u"
    * Maks. 1000 karakter.
    * Connection'ın amacını açıklayın.

    <Info>
      Sayfanın üst kısmındaki işlem butonları alanında, **\[\<> Variable]** butonunu kullanarak dinamik değer seçebilir, Global variable ifadeleri sayesinde connection parametrelerini sabit değer yerine değişken tabanlı yönetebilirsiniz. Detaylı bilgi için [Dinamik Değişkenler](/tr/concepts/temel-kavramlar/dinamik-degiskenler) sayfasını inceleyebilirsiniz.
    </Info>
  </Step>

  <Step title="Environment (Ortam) Seçimi">
    * Dropdown menüden ortam seçin: **Development**, **Test**, veya **Production**.
    * Her ortam için farklı connection parametreleri tanımlanabilir.
  </Step>

  <Step title="HTTP Bağlantı Parametreleri">
    * **HTTP Method** listesinden GET/POST/PUT vb. seçin.
    * **Full URL** alanına https\:// ile başlayan tam uç noktayı girin.
    * Gerekirse query parametreleri veya path değişkenleri için placeholder kullanın.
  </Step>

  <Step title="Başlık Yönetimi">
    * **Headers** sekmesinde **+** ile yeni satır ekleyin.
    * **Header Name** ve **Header Value** alanları boş bırakılamaz.
    * Otomatik tamamlama listesinden yaygın başlıkları seçebilirsiniz.
  </Step>

  <Step title="Timeout ve Connection Pool Ayarları">
    * **Settings** sekmesindeki **Timeout** alanı isteğin tamamlanması için maksimum süreyi (saniye) belirler.
    * Pool size sunucu tarafından yönetildiği için UI üzerinde sadece timeout değeri değiştirilir.
  </Step>

  <Step title="Güvenlik ve Authentication Ayarları">
    * API anahtarları veya Bearer token'ları **Authorization** başlığına yazın.
    * Temel HTTP auth gerekiyorsa Authorization: Basic ... oluşturun.
    * HTTPS URL'leriyle SSL/TLS koruması sağlanır; gerektiğinde mutual TLS için sertifika bağlantısını environment seviyesinde yapılandırın.
  </Step>

  <Step title="Test Connection">
    * **\[Test Connection]** butonuna tıklayın.
    * Bağlantı parametrelerinin doğru olup olmadığını test edin.
    * **Başarılı:** Yeşil onay mesajı
    * **Başarısız:** Hata detayları gösterilir
  </Step>

  <Step title="Kaydetme">
    * Sağ üstteki **\[Save and Deploy]** butonuna tıklayın.

    **Kontrol Listesi:**

    * Benzersiz isim
    * Zorunlu alanlar dolu
    * Test connection başarılı (önerilir)

    **Sonuç:**

    * Connection listeye eklenir
    * Integration Flow ve Connector adımlarında kullanılabilir hale gelir
    * Ortama göre aktif olur

    <Check>
      Connection başarıyla oluşturuldu! Artık Integration Flow ve Connector adımlarında kullanabilirsiniz.
    </Check>
  </Step>
</Steps>

### Connection'ı Silme

Connection'ı silmek için:

<CardGroup cols={2}>
  <Card title="Yöntem 1: Liste Ekranından" icon="list">
    * Connection listesinde satır sonundaki **⋮** menüsünden **Delete** seçeneğini tıklayın.
    * Onay dialogunda silme işlemini onaylayın.
  </Card>

  <Card title="Silme İpuçları" icon="info-circle">
    **Silmeden Önce Kontrol Edin:**

    * Integration Flow veya Connector adımlarında kullanılıyor olabilir.
    * Gerekirse alternatif bir connection atayın.
    * Silmeden önce Export ile yedek alın.
  </Card>

  <Card title="Alternatif: Deaktif Etme" icon="toggle-off">
    * Silmek yerine connection'ın aktif durumunu pasif hale getirin.
    * Connection pasif olur ancak silinmez.
    * Gerektiğinde aktif hale getirerek yeniden kullanabilirsiniz.
  </Card>
</CardGroup>

### Connection'ı Dışa/İçe Aktarma

<Info>
  Bu adımda kullanıcı, mevcut connection'ları yedekleme, farklı ortamlara taşıma veya paylaşma amacıyla dışa aktarabilir (export) ya da daha önce dışa aktarılmış bir connection'ı tekrar içe aktarabilir (import). Bu işlem, sürüm yönetimi, test ve üretim ortamları arasında geçiş veya ekipler arası paylaşım süreçlerinde veri bütünlüğünü korumak için kullanılır.
</Info>

<AccordionGroup>
  <Accordion title="Dışa Aktarma (Export)">
    <CardGroup cols={2}>
      <Card title="Yöntem 1: Liste Ekranından" icon="list">
        * Connection listesinde satır sonundaki **⋮** menüsünden **Export** seçeneğini tıklayın.
        * ZIP dosyası otomatik olarak indirilir.
      </Card>

      <Card title="Dosya Formatı" icon="file-zipper">
        Format: `{Date}-webhook-integration-{ConnectionName}-export.zip`\
        Örnek: `13 Nov 2025-webhook-integration-Production_Webhook-export.zip`
      </Card>

      <Card title="ZIP İçeriği" icon="folder-open">
        * Connection JSON dosyası
        * Metadata bilgileri
        * Bağımlılık bilgileri (örneğin sertifikalar, key store)
      </Card>

      <Card title="Kullanım Alanları" icon="list-check">
        * Yedekleme
        * Ortamlar arası taşıma (Test → Prod)
        * Versiyonlama
        * Ekip veya proje bazlı paylaşım
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="İçe Aktarma (Import)">
    <CardGroup cols={2}>
      <Card title="İçe Aktarma Adımları" icon="upload">
        * Ana listede **\[Import Webhook Entegrasyonu]** butonuna tıklayın.
        * İndirilen ZIP dosyasını seçin.
        * Sistem kontrolleri: Format geçerli mi? İsim çakışması var mı? Bağımlılıklar mevcut mu?
        * Ardından **\[Import]** butonuna tıklayın.
      </Card>

      <Card title="İçe Aktarma Senaryoları" icon="info-circle">
        **Senaryo 1: İsim Çakışması** → Eski connection'ın üzerine yazın veya yeni bir isimle oluşturun.

        **Senaryo 2: Eksik Bağımlılıklar** → Eksik sertifikaları veya key store'ları önce oluşturun veya import sırasında çıkarın.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Connection'ın Kullanım Alanları

<CardGroup cols={2}>
  <Card title="Connection Oluşturma ve Aktif Etme" icon="plus-circle">
    **Adımlar:**

    1. Connection'ı oluşturun
    2. Test Connection ile bağlantıyı doğrulayın
    3. Save and Deploy ile kaydedin ve etkinleştirin
    4. Connection'ın Enabled durumda olduğundan emin olun.
  </Card>

  <Card title="Integration / Connector Adımlarında Kullanım" icon="workflow">
    HTTP/REST tabanlı webhook çağrıları gerektiren adımlarda connection seçilir. Örnek: "Send Webhook", "Invoke REST API", "HTTP Request", "Log to External Endpoint" gibi adımlar. Bağlantı seçimi bu adımların yapılandırmasında yer alan Connection alanından yapılır.
  </Card>

  <Card title="Scheduled Job Kullanımı" icon="clock">
    Zamanlanmış görevlerde (ör. belirli aralıklarla webhook çağrısı, bildirim gönderme vb.) bağlantı seçilerek HTTP uç noktalarına erişim sağlanır. Connection değiştiğinde, job çalışma davranışı da buna göre güncellenir.
  </Card>

  <Card title="Test Amaçlı Kullanım" icon="check-circle">
    Connection Test özelliği ile bağlantının doğruluğu Integration Flow'dan bağımsız olarak kontrol edilebilir. Bu test hata ayıklama sürecinde kritik önem taşır.
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Yapılması Gerekenler ve En İyi Uygulamalar">
    <CardGroup cols={2}>
      <Card title="HTTP Metot Yönetimi" icon="send">
        **Kötü:** Tüm çağrıları POST olarak göndermek\
        **İyi:** Hedef servisin gerektirdiği metodu seçmek\
        **En İyi:** CRUD operasyonları için GET/POST/PUT/PATCH/DELETE kullanımını sözleşmeye göre ayarlamak
      </Card>

      <Card title="URL Sürümleme" icon="git-branch">
        **Kötü:** URL içinde sabit v1/v2 path'lerini manuel değiştirmek\
        **İyi:** Yeni connection oluşturarak farklı versiyonları ayırmak\
        **En İyi:** Parametrik URL tanımı kullanıp ortam bazlı olarak versiyonları yönetmek
      </Card>

      <Card title="Header Güvenliği" icon="shield">
        **Kötü:** Authorization başlığını düz metin olarak paylaşmak\
        **İyi:** API anahtarlarını sadece ilgili connection'da saklamak\
        **En İyi:** Secret Manager üzerinden dinamik olarak çekilen token'ları kullanmak
      </Card>

      <Card title="Deployment Yönetimi" icon="rocket">
        **Kötü:** Test edilmemiş connection'ı Production'a deploy etmek\
        **İyi:** Test ortamında doğruladıktan sonra kopyalamak\
        **En İyi:** Export/Import ile versiyonlayıp değişiklik kaydını saklamak
      </Card>

      <Card title="Ortam Yönetimi" icon="layers">
        **Kötü:** Tüm ortamlarda aynı connection parametrelerini kullanmak\
        **İyi:** Her ortam için ayrı connection oluşturmak\
        **En İyi:** Environment seçeneğini kullanarak tek connection'da tüm ortamları yönetmek, ortamlar arası geçişte sadece environment değiştirmek
      </Card>

      <Card title="Connection Test" icon="check-circle">
        **Kötü:** Connection'ı test etmeden kaydetmek ve deploy etmek\
        **İyi:** Kaydetmeden önce Test Connection ile doğrulamak\
        **En İyi:** Her parametre değişikliğinden sonra test etmek, production'a geçmeden önce test ortamında tam entegrasyon testi yapmak
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Güvenlik En İyi Uygulamaları">
    <CardGroup cols={2}>
      <Card title="API Anahtar Yönetimi" icon="key">
        API anahtarlarını aynı header'da hem Test hem Prod için kullanmayın. Her ortam için farklı anahtar tanımlayın ve rotasyon takvimi oluşturun
      </Card>

      <Card title="Header Maskeleme" icon="eye-off">
        Konsol çıktılarında hassas header değerlerinin loglanmasını kapatın. Sadece anonimize edilmiş X-Trace-Id gibi bilgileri açık bırakın
      </Card>

      <Card title="Yetkilendirme Seviyesi" icon="shield-check">
        Webhook uç noktasında IP whitelisting veya HMAC imza doğrulaması kullanın. Apinizer tarafında ilgili imza başlığını otomatik üretin
      </Card>

      <Card title="Kimlik Bilgileri Yönetimi" icon="user-check">
        Kullanıcı adı ve şifre gibi hassas bilgileri environment variable veya secret manager kullanarak saklayın. Kimlik bilgilerini kod veya konfigürasyon dosyalarına hardcode etmeyin. Periyodik olarak şifreleri güncelleyin
      </Card>

      <Card title="SSL/TLS Kullanımı" icon="shield-check">
        Production ortamında mutlaka SSL/TLS aktif edin. Self-signed sertifikalar sadece development ortamında kullanın. Sertifika expiration tarihlerini takip edin ve zamanında yenileyin
      </Card>

      <Card title="Erişim Kontrolü" icon="lock">
        Connection yapılandırmasını sadece yetkili kullanıcıların değiştirmesine izin verin. Connection değişiklik loglarını saklayın. Kritik connection'lar için değişiklik approval süreci uygulayın
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Kaçınılması Gerekenler">
    <CardGroup cols={2}>
      <Card title="Sabit Token Kullanımı" icon="alert-triangle">
        **Neden kaçınılmalı:** Token sızıntısında tüm ortamlar etkilenir\
        **Alternatif:** Ortam bazlı farklı Authorization değerleri kullanın
      </Card>

      <Card title="HTTP Üzerinden Gönderim" icon="alert-triangle">
        **Neden kaçınılmalı:** Şifrelenmemiş kanalda veri tanır\
        **Alternatif:** URL'yi HTTPS yapın, gerekirse hedef tarafa sertifika sağlayın
      </Card>

      <Card title="Header Çakışmaları" icon="alert-triangle">
        **Neden kaçınılmalı:** Aynı başlık birden fazla kez gönderilerek hedef sistemde hata oluşur\
        **Alternatif:** Header tablosunu düzenli gözden geçirip gereksiz satırları kaldırın
      </Card>

      <Card title="Production Connection'ı Test Ortamında Kullanma" icon="alert-triangle">
        **Neden kaçınılmalı:** Test verileri production sistemine yazılabilir, gerçek kullanıcılar etkilenebilir, güvenlik riski oluşur\
        **Alternatif:** Her ortam için ayrı connection oluşturun, environment parametresini kullanın, connection isimlerini ortama göre prefix ekleyerek ayırın (Test\_, Prod\_)
      </Card>

      <Card title="Çok Düşük Timeout Değerleri" icon="alert-triangle">
        **Neden kaçınılmalı:** Ağ gecikmelerinde connection sürekli timeout olur, Entegrasyon adımları başarısız olur\
        **Alternatif:** Gerçek kullanım senaryolarına göre timeout değerlerini ayarlayın, network latency'yi ölçün ve timeout'ları buna göre belirleyin
      </Card>

      <Card title="Connection Pool Kullanmama" icon="alert-triangle">
        **Neden kaçınılmalı:** Her istekte yeni bağlantı açılır, performans düşer, kaynak tüketimi artar, hedef sistem yükü artar\
        **Alternatif:** Connection pool aktif edin, pool size'ı trafik hacmine göre ayarlayın, pool monitoring kurun
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performans İpuçları">
    <CardGroup cols={2}>
      <Card title="Payload Boyutu" icon="file">
        **Öneri:** Webhook mesajlarını 200 KB altında tutun\
        **Etki:** Daha kısa yanıt süreleri ve daha düşük timeout oranı
      </Card>

      <Card title="Paralel Çağrı Yönetimi" icon="layers">
        **Öneri:** Yüksek hacimli tetikleyicilerde Integration Flow tarafında concurrency sınırlarını tanımlayın\
        **Etki:** Hedef sistem aşırı yüklenmez, hata oranı düşer
      </Card>

      <Card title="Retry Stratejisi" icon="refresh-cw">
        **Öneri:** Idempotent uç noktalar için Flow'da retry politikası ekleyin, non-idempotent çağrılarda hatayı loglayıp manuel aksiyon alın\
        **Etki:** Kritik işlemlerde veri kaybı önlenir
      </Card>

      <Card title="Connection Pool Optimizasyonu" icon="database">
        **Öneri:** Pool size'ı peak trafiğe göre ayarlayın (önerilen: eşzamanlı istek sayısı × 1.5), idle connection timeout'ları belirleyin, pool health check yapın\
        **Etki:** Bağlantı açma maliyeti %80 azalır, yanıt süreleri düşer, kaynak kullanımı optimize edilir
      </Card>

      <Card title="Timeout Değerleri Optimizasyonu" icon="hourglass">
        **Öneri:** Gerçek network latency'yi ölçün, timeout değerlerini buna göre ayarlayın, çok düşük veya çok yüksek timeout'lardan kaçının\
        **Etki:** Gereksiz beklemeler önlenir, hızlı fail-over sağlanır, kullanıcı deneyimi iyileşir
      </Card>

      <Card title="Connection Monitoring" icon="activity">
        **Öneri:** Connection pool kullanımını izleyin, timeout oranlarını takip edin, connection health check yapın, alerting kurun\
        **Etki:** Sorunlar proaktif tespit edilir, performans darboğazları erken belirlenir, kesinti süresi azalır
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Sorun Giderme (Troubleshooting)

<AccordionGroup>
  <Accordion title="Webhook 4xx Hatası">
    <Warning>
      Yanlış endpoint, eksik header veya hatalı payload format olabilir.
    </Warning>

    <Steps>
      <Step title="URL ve HTTP Metodu">
        URL ve HTTP metodunu doğrulayın.
      </Step>

      <Step title="Header Kontrolü">
        Zorunlu header'ların gönderildiğini kontrol edin.
      </Step>

      <Step title="Payload Formatı">
        Hedef dokümantasyona göre payload'ı yeniden formatlayın.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Test Connection Başarısız ve 5xx Döndü">
    <Warning>
      Hedef servis kapalı, TLS sertifikası reddedildi veya rate limit alınmış olabilir.
    </Warning>

    <Steps>
      <Step title="Servis Sağlığı">
        Hedef servisin sağlığını kontrol edin.
      </Step>

      <Step title="Sertifika Doğrulama">
        HTTPS sertifika zincirini doğrulayın.
      </Step>

      <Step title="Rate Limit">
        Rate limit loglarını inceleyip bekleme süresi ekleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network gecikmesi, hedef sistem yavaş yanıt veriyor veya timeout değeri çok düşük olabilir.
    </Warning>

    <Steps>
      <Step title="Network Kontrolü">
        Network connectivity kontrol edin.
      </Step>

      <Step title="Sistem Sağlığı">
        Hedef sistem sağlığını kontrol edin.
      </Step>

      <Step title="Timeout Ayarları">
        Timeout değerlerini artırın.
      </Step>

      <Step title="Log İnceleme">
        Connection loglarını inceleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Yanlış kullanıcı adı/şifre, expired credentials veya yetki problemi olabilir.
    </Warning>

    <Steps>
      <Step title="Kimlik Bilgileri">
        Kimlik bilgilerini doğrulayın.
      </Step>

      <Step title="Kullanıcı Durumu">
        Hedef sistemde kullanıcının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Yetki Kontrolü">
        Gerekli yetkilerin verildiğini kontrol edin.
      </Step>

      <Step title="Sertifika Kontrolü">
        SSL/TLS sertifikalarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size çok düşük, connection leak var veya trafik çok yüksek olabilir.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Pool size'ı artırın.
      </Step>

      <Step title="Connection Kontrolü">
        Connection'ların düzgün kapatıldığını kontrol edin.
      </Step>

      <Step title="Idle Timeout">
        Idle connection timeout'ları ayarlayın.
      </Step>

      <Step title="Metrik İzleme">
        Connection kullanım metriklerini izleyin.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Başarılı Ama Entegrasyon Akışı Hata Veriyor">
    <Warning>
      Integration/Connector adımında farklı connection seçili olabilir, adım yanlış yapılandırılmış olabilir veya Flow/Job redeploy edilmemiş olabilir.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Connection'ın enable toggle'ının aktif olduğunu kontrol edin.
      </Step>

      <Step title="Connection Seçimi">
        Integration Flow'da doğru connection'ın seçildiğini doğrulayın.
      </Step>

      <Step title="Connection Deploy">
        Connection'ı tekrar deploy edin.
      </Step>

      <Step title="Flow/Job Deploy">
        Integration Flow veya Job'ı redeploy edin.
      </Step>

      <Step title="Log Kontrolü">
        Gateway loglarını kontrol edin.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Sık Sorulan Sorular (SSS)

<AccordionGroup>
  <Accordion title="Aynı webhook connection'ı hem Slack hem de Teams için kullanabilir miyim?">
    <Info>
      Aynı connection tek bir URL'ye yönlenir. Farklı platformlar için farklı connection oluşturmanız veya URL'yi parametrik hale getirmeniz gerekir.
    </Info>
  </Accordion>

  <Accordion title="Name alanı neden kaydetmeden önce hata veriyor?">
    <Info>
      Listede aynı isimde connection varsa servis nameExist=true döner ve kaydetmeye izin vermez. İsmi benzersiz olacak şekilde güncelleyin.
    </Info>
  </Accordion>

  <Accordion title="Header tablosuna kaç adet satır ekleyebilirim?">
    <Info>
      Sınırlama yoktur ancak her satırın name ve value değerleri dolu olmalıdır; aksi halde kaydetme engellenir.
    </Info>
  </Accordion>

  <Accordion title="Timeout alanı hangi birimde çalışıyor?">
    <Info>
      UI saniye cinsinden değer alır ve backend bu değeri milisaniyeye çevirerek HTTP istemcisine aktarır.
    </Info>
  </Accordion>

  <Accordion title="Test Connection hangi ortamda çalışır?">
    <Info>
      Seçtiğiniz environment kimliğine göre Publication Worker üzerinde çalışır ve gerçek endpoint'e ulaşmaya çalışır.
    </Info>
  </Accordion>

  <Accordion title="Aynı connection'ı birden fazla Integration Flow'da kullanabilir miyim?">
    <Check>
      Evet, aynı connection birden fazla Integration Flow veya Connector adımında kullanılabilir. Bu merkezi yönetim sağlar ve konfigürasyon tutarlılığını garanti eder. Ancak connection'da yapılan değişiklikler tüm kullanım yerlerini etkileyeceği için dikkatli olunmalıdır.
    </Check>
  </Accordion>

  <Accordion title="Connection pool kullanmak zorunlu mudur?">
    <Info>
      Connection pool kullanımı zorunlu değildir ancak yüksek trafikli sistemlerde şiddetle önerilir. Her istekte yeni bağlantı açmak yerine mevcut bağlantıları yeniden kullanmak performansı önemli ölçüde artırır.
    </Info>
  </Accordion>

  <Accordion title="Test ve Production için farklı connection'lar mı oluşturmalıyım?">
    <Check>
      Evet, her ortam için ayrı connection oluşturmanız önerilir. Alternatif olarak environment parametresini kullanarak tek connection içinde tüm ortamları yönetebilirsiniz. Bu yaklaşım daha kolay yönetim ve daha az hata riski sağlar.
    </Check>
  </Accordion>

  <Accordion title="Test Connection başarılı ama Integration Flow'da çalışmıyor, neden?">
    <Warning>
      Birkaç neden olabilir:
    </Warning>

    1. Connection enable toggle'ı pasif olabilir
    2. Integration adımında farklı bir connection seçili olabilir
    3. Connection deploy edilmemiş olabilir
    4. Integration Flow henüz redeploy edilmemiş olabilir
  </Accordion>
</AccordionGroup>
