> ## 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.

# API Sağlık Kontrolü

> API'lerin ve web servislerin sürekli çalışıp çalışmadığını otomatik olarak kontrol edebilirsiniz, performans metriklerini takip edebilirsiniz, sorunları erken tespit edebilirsiniz ve başarısız durumlarda bildirim gönderebilirsiniz.

## Genel Bakış

<CardGroup cols={2}>
  <Card title="7/24 İzleme" icon="clock">
    API'lerinizin erişilebilirliğini sürekli izleyin
  </Card>

  <Card title="Performans Metrikleri" icon="chart-line">
    Yanıt süreleri ve başarı oranlarını takip edin
  </Card>

  <Card title="Erken Uyarı" icon="bell">
    Sorunları kullanıcılar etkilenmeden önce tespit edin
  </Card>

  <Card title="Otomatik Bildirimler" icon="envelope">
    Hızlı müdahale için anında bildirim alın
  </Card>
</CardGroup>

<Frame caption="API Sağlık Kontrolü ayarlar formu - Tüm yapılandırma alanları">
  <img src="https://mintcdn.com/apinizer/LoT_QidIA2t_0Oih/images/monitor/api-saglik-kontrolu/01-ayarlar-formu.png?fit=max&auto=format&n=LoT_QidIA2t_0Oih&q=85&s=0a074b1e67add2c87f8120ba70ca4697" alt="API Sağlık Kontrolü Ayarlar Formu" width="1000" height="800" style={{ borderRadius: '0.5rem' }} data-path="images/monitor/api-saglik-kontrolu/01-ayarlar-formu.png" />
</Frame>

## API Sağlık Kontrolü Nedir?

### Temel Kavram

API Sağlık Kontrolü, belirlediğiniz bir API endpoint'ine veya web servisine **belirli aralıklarla otomatik olarak test istekleri gönderen** bir izleme sistemidir.

<AccordionGroup>
  <Accordion title="Ne Zaman Kullanılır?">
    <CardGroup cols={2}>
      <Card title="Kritik API İzleme" icon="shield">
        Ödeme, kimlik doğrulama gibi kritik API'lerin sürekli izlenmesi
      </Card>

      <Card title="SLA Takibi" icon="file-contract">
        Servis seviyesi anlaşmalarının takibi ve raporlanması
      </Card>

      <Card title="Performans İzleme" icon="gauge">
        API yanıt sürelerinin izlenmesi ve trend analizi
      </Card>

      <Card title="Uptime Monitoring" icon="server">
        Servislerin çalışma süresi (uptime) takibi
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Nasıl Çalışır?">
    <Steps>
      <Step title="Yapılandırma">
        Kontrol edilecek URL, HTTP metodu, beklentiler ve zamanlama belirlenir
      </Step>

      <Step title="Zamanlama">
        Belirlenen zamanlarda (örn: her 5 dakikada bir) otomatik olarak test isteği gönderilir
      </Step>

      <Step title="Test Çalıştırma">
        HTTP isteği gönderilir ve yanıt alınır
      </Step>

      <Step title="Doğrulama">
        Beklentiler (assertion'lar) kontrol edilir:

        * Yanıt süresi kontrolü
        * HTTP durum kodu kontrolü
        * Yanıt içeriği kontrolü
        * XPath/JSONPath kontrolleri
      </Step>

      <Step title="Sonuç Kaydetme">
        Test sonucu kaydedilir (başarılı/başarısız)
      </Step>

      <Step title="Bildirim">
        Eğer test başarısız olursa, yapılandırılmış bildirimler tetiklenir
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Hızlı Başlangıç

### İlk Sağlık Kontrolünüzü Oluşturma

<Steps>
  <Step title="Menüden Erişim">
    **Ana Menüden** → **İzleme** → **API Sağlık Kontrolü** seçeneğine tıklayın
  </Step>

  <Step title="Yeni Kontrol Oluştur">
    **"Yeni Oluştur"** butonuna tıklayın
  </Step>

  <Step title="Temel Bilgileri Doldurun">
    * **Ad**: Kontrolünüz için bir isim (örn: "Ödeme API Kontrolü")
    * **Açıklama**: İsteğe bağlı açıklama
  </Step>

  <Step title="İstek Bilgilerini Girin">
    * **HTTP Metodu**: GET, POST, vb.
    * **URL**: Test edilecek API endpoint'i
  </Step>

  <Step title="Zamanlama Ayarlayın">
    Kontrol sıklığını belirleyin (örn: Her 5 dakikada bir)
  </Step>

  <Step title="Kaydet">
    **"Kaydet"** butonuna tıklayın
  </Step>
</Steps>

## Yeni Sağlık Kontrolü Oluşturma

### Adım 1: Temel Bilgiler

<AccordionGroup>
  <Accordion title="Ad  - Zorunlu">
    Sağlık kontrolü için benzersiz bir isim girin. Bu isim:

    * Proje içinde benzersiz olmalıdır
    * Boşlukla başlayamaz
    * Sistem otomatik olarak ismin kullanılabilirliğini kontrol eder

    **İyi İsim Örnekleri:**

    * `Ödeme API İzleme`
    * `Kullanıcı Servisi Health Check`
    * `Üçüncü Taraf Entegrasyon Kontrolü`
    * `Ana Sayfa Erişilebilirlik Kontrolü`
  </Accordion>

  <Accordion title="Açıklama  - Opsiyonel">
    Sağlık kontrolü hakkında açıklayıcı bilgi girebilirsiniz:

    * Maksimum 1000 karakter
    * Maksimum 1000 karakter
    * Kontrolün amacını ve kapsamını açıklamak için kullanılır
    * Liste sayfasında görüntülenir

    **Örnek Açıklamalar:**

    * `Kritik ödeme API'sinin 7/24 izlenmesi için oluşturulmuştur`
    * `Müşteri portalı ana sayfa erişilebilirlik kontrolü`
    * `Üçüncü taraf servis sağlayıcı entegrasyonu izleme`
  </Accordion>

  <Accordion title="Durum (Status) - Varsayılan: Aktif">
    Sağlık kontrolünün aktif/pasif durumunu belirler:

    * **Aktif**: Kontrol çalışır, zamanlanmış testler gönderilir
    * **Pasif**: Kontrol durdurulur, test gönderilmez (geçmiş veriler korunur)
  </Accordion>
</AccordionGroup>

### Adım 2: Zamanlama Ayarları

Sağlık kontrolünün ne sıklıkla çalışacağını belirleyin. **Cron Expression** kullanarak zamanlama yapılır.

#### Yaygın Zamanlama Örnekleri

| Açıklama                  | Cron Expression  | Kullanım Senaryosu              |
| ------------------------- | ---------------- | ------------------------------- |
| Her 5 dakikada bir        | `0 */5 * ? * *`  | Kritik API'ler için (en yaygın) |
| Her 15 dakikada bir       | `0 */15 * ? * *` | Normal API'ler için             |
| Her saat başı             | `0 0 * ? * *`    | Test/Development ortamları için |
| Her gün saat 09:00        | `0 0 9 * ? *`    | Günlük raporlama için           |
| Her hafta Pazartesi 09:00 | `0 0 9 ? * MON`  | Haftalık kontrol için           |

<Tip>
  **Öneriler:**

  * **Kritik API'ler** için: Her 5 dakikada bir
  * **Normal API'ler** için: Her 15-30 dakikada bir
  * **Test/Development** için: Her saat başı
  * **Raporlama amaçlı** kontroller için: Günlük veya haftalık
</Tip>

### Adım 3: İstek Ayarları

Bu bölümde test edilecek endpoint'in bilgilerini yapılandırırsınız.

<AccordionGroup>
  <Accordion title="Koleksiyondan Seçin (Select From Collection) - Önerilen">
    Daha önce Test Console'da oluşturduğunuz test senaryolarını kullanabilirsiniz:

    <Steps>
      <Step title="Butona Tıklayın">
        **"Koleksiyondan Seçin"** butonuna tıklayın
      </Step>

      <Step title="Koleksiyonu Seçin">
        Açılan dialog'da test koleksiyonlarınızı görüntüleyin
      </Step>

      <Step title="Senaryoyu Seçin">
        İstediğiniz test senaryosunu seçin
      </Step>

      <Step title="Otomatik Doldurma">
        Test bilgileri otomatik olarak formu doldurur
      </Step>
    </Steps>

    <Info>
      **Avantajları:**

      * Zaman kazanırsınız
      * Tutarlı test senaryoları kullanırsınız
      * Test senaryolarınızı merkezi olarak yönetebilirsiniz
    </Info>
  </Accordion>

  <Accordion title="HTTP Metodu (Method) - Zorunlu">
    HTTP istek metodunu seçin:

    <CardGroup cols={2}>
      <Card title="GET" icon="download">
        Veri okuma (en yaygın kullanılan)
      </Card>

      <Card title="POST" icon="upload">
        Veri gönderme
      </Card>

      <Card title="PUT" icon="edit">
        Veri güncelleme
      </Card>

      <Card title="DELETE" icon="trash">
        Veri silme
      </Card>

      <Card title="PATCH" icon="wrench">
        Kısmi güncelleme
      </Card>

      <Card title="HEAD" icon="info">
        Sadece header bilgisi
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="URL - Zorunlu">
    Test edilecek endpoint'in tam URL'ini girin:

    **Örnekler:**

    * `https://api.example.com/users`
    * `https://api.example.com/payment/verify`
    * `http://localhost:8080/health`
    * `https://api.example.com/v1/products?category=electronics`

    <Warning>
      **Notlar:**

      * URL mutlak (absolute) olmalıdır
      * HTTPS ve HTTP desteklenir
      * Query parametreleri URL'ye eklenebilir veya ayrı bir alanda belirtilebilir
    </Warning>
  </Accordion>

  <Accordion title="Parametreler (Parameters) - Opsiyonel">
    URL'ye query parametreleri eklemek için kullanılır:

    **Örnek:**

    * Parametre Adı: `userId`
    * Parametre Değeri: `12345`

    **Sonuç URL:** `https://api.example.com/users?userId=12345`
  </Accordion>

  <Accordion title="Başlıklar (Headers) - Opsiyonel">
    HTTP isteğine header eklemek için kullanılır:

    **Yaygın Kullanımlar:**

    * **Authorization**: `Bearer token123` veya `Basic base64encoded`
    * **Content-Type**: `application/json`, `application/xml`
    * **X-API-Key**: `your-api-key`
    * **Custom Headers**: Özel header'lar

    **Örnek:**

    * Başlık Adı: `Authorization`
    * Başlık Değeri: `Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...`
  </Accordion>

  <Accordion title="Gövde (Body) - POST/PUT/PATCH için">
    İstek gövdesi (request body) girebilirsiniz:

    **Desteklenen Formatlar:**

    * **Raw**: JSON, XML, Text
    * **Form URL Encoded**: Form verileri

    **JSON Örneği:**

    ```json theme={null}
    {
        "userId": 12345,
        "action": "verify",
        "timestamp": "2024-01-15T10:30:00Z"
    }
    ```

    **XML Örneği:**

    ```xml theme={null}
    <request>
        <userId>12345</userId>
        <action>verify</action>
    </request>
    ```
  </Accordion>
</AccordionGroup>

### Adım 4: Doğrulama Ayarları

Doğrulama (Assertion) ayarları, test sonucunun başarılı sayılması için gerekli kontrolleri belirler.

<AccordionGroup>
  <Accordion title="Zamanaşımı Kontrolü (Timeout Assertion)">
    Bu seçenek aktif edildiğinde, belirlenen zamanaşımı değeri doğrulama için de kullanılır:

    * İstek belirlenen süre içinde yanıtlanmalıdır
    * Aksi halde test başarısız sayılır
  </Accordion>

  <Accordion title="HTTP Durum Kodu Kontrolü (Status Code Assertion)">
    HTTP status code kontrolü yapmak için:

    <Steps>
      <Step title="Toggle'ı Aktif Edin">
        **"Sonuç Durum Kodu"** toggle'ını aktif edin
      </Step>

      <Step title="Status Code Girin">
        **"Beklenen Durum Kodu"** alanına beklenen status code'u girin
      </Step>
    </Steps>

    **Varsayılan Değer:** `200` (OK)

    **Yaygın Status Code'lar:**

    * `200`: Başarılı
    * `201`: Oluşturuldu
    * `204`: İçerik yok
    * `400`: Hatalı istek
    * `401`: Yetkisiz
    * `404`: Bulunamadı
    * `500`: Sunucu hatası

    **Örnek Senaryo:**

    * Beklenen Status Code: `200`
    * Gerçek Status Code: `200` → ✅ Başarılı
    * Gerçek Status Code: `500` → ❌ Başarısız
  </Accordion>

  <Accordion title="Yanıt Gövdesi Kontrolü (Body Assertion)">
    Response body'nin belirli bir içerik içerip içermediğini kontrol eder:

    <Steps>
      <Step title="Toggle'ı Aktif Edin">
        **"Sonuç Gövdesi"** toggle'ını aktif edin
      </Step>

      <Step title="İçerik Girin">
        **"Beklenen Sonuç Gövdesi"** alanına beklenen içeriği girin
      </Step>
    </Steps>

    **Kullanım Senaryoları:**

    * Response'ta belirli bir metin olmalı: `"status": "success"`
    * Response belirli bir değer içermeli: `"active": true`
    * Response boş olmamalı

    **Örnek:**

    * Beklenen: `"status": "ok"`
    * Gerçek: `{"status": "ok", "data": {...}}` → ✅ Başarılı
    * Gerçek: `{"status": "error"}` → ❌ Başarısız
  </Accordion>

  <Accordion title="XPath Kontrolü (XPath Assertion) - XML için">
    XML response'larda XPath kullanarak kontrol yapar:

    <Steps>
      <Step title="Toggle'ı Aktif Edin">
        **"XPath Sonucu"** toggle'ını aktif edin
      </Step>

      <Step title="XPath Girin">
        **XPath** alanına XPath ifadesini girin
      </Step>

      <Step title="Beklenen Değeri Girin">
        **Beklenen XPath Sonucu** alanına beklenen değeri girin
      </Step>
    </Steps>

    **Örnek:**

    * XPath: `/response/status`
    * Beklenen Sonuç: `success`
    * Gerçek XML: `<response><status>success</status></response>` → ✅ Başarılı
  </Accordion>

  <Accordion title="JSONPath Kontrolü (JSONPath Assertion) - JSON için">
    JSON response'larda JSONPath kullanarak kontrol yapar:

    <Steps>
      <Step title="Toggle'ı Aktif Edin">
        **"JsonPath Sonucu"** toggle'ını aktif edin
      </Step>

      <Step title="JSONPath Girin">
        **JsonPath** alanına JSONPath ifadesini girin
      </Step>

      <Step title="Beklenen Değeri Girin">
        **Beklenen JsonPath Sonucu** alanına beklenen değeri girin
      </Step>
    </Steps>

    **Örnek:**

    * JSONPath: `$.status`
    * Beklenen Sonuç: `ok`
    * Gerçek JSON: `{"status": "ok", "data": {...}}` → ✅ Başarılı

    **Yaygın JSONPath Örnekleri:**

    * `$.status`: Root'taki status alanı
    * `$.data.items[0].id`: İlk item'ın id'si
    * `$.user.name`: User objesinin name alanı
    * `$.results[*].id`: Tüm result'ların id'leri
  </Accordion>
</AccordionGroup>

### Adım 5: Ayarlar

<AccordionGroup>
  <Accordion title="Zamanaşımı (Timeout) - Varsayılan: 30 saniye">
    İstek için maksimum bekleme süresini belirler:

    * **Saniye cinsinden** girilir
    * Varsayılan değer: `30` saniye
    * Bu süre içinde yanıt alınamazsa test başarısız sayılır

    <Tip>
      **Öneriler:**

      * Hızlı API'ler için: `10-15` saniye
      * Normal API'ler için: `30` saniye
      * Yavaş API'ler için: `60` saniye veya daha fazla
    </Tip>
  </Accordion>

  <Accordion title="SSL Sertifikası (Enable Certificate)">
    HTTPS isteklerinde SSL sertifikası kullanmak için:

    * Bu seçenek aktif edildiğinde, özel SSL sertifikası kullanılabilir
    * Genellikle self-signed sertifikalar veya özel CA sertifikaları için kullanılır
  </Accordion>
</AccordionGroup>

### Adım 6: Yeniden Deneme Ayarları (Retry Settings)

Geçici sorunlarda otomatik yeniden deneme yapmak için:

<AccordionGroup>
  <Accordion title="Başarısızsa Yeniden Dene (Retry On Fail)">
    <Steps>
      <Step title="Toggle'ı Aktif Edin">
        **"Başarısızsa Yeniden Dene"** toggle'ını aktif edin
      </Step>

      <Step title="Sayı Seçin">
        **"Yeniden Deneme Sayısı"** seçin: `1`, `3`, `5`, veya `10`
      </Step>
    </Steps>

    **Nasıl Çalışır:**

    * İlk istek başarısız olursa
    * Belirlenen sayı kadar tekrar denenir
    * Her deneme arasında bekleme yapılabilir (opsiyonel)

    **Örnek Senaryo:**

    * Yeniden Deneme Sayısı: `3`
    * İlk istek başarısız → 1. yeniden deneme → başarısız → 2. yeniden deneme → başarısız → 3. yeniden deneme → başarılı → ✅ Başarılı
  </Accordion>

  <Accordion title="İstekler Arası Bekleme (Delay Between Requests)">
    Yeniden denemeler arasında bekleme yapmak için:

    <Steps>
      <Step title="Toggle'ı Aktif Edin">
        **"İstekler Arası Bekleme"** toggle'ını aktif edin
      </Step>

      <Step title="Bekleme Süresi Girin">
        **"Bekleme"** alanına saniye cinsinden bekleme süresini girin
      </Step>
    </Steps>

    **Varsayılan Değer:** `3` saniye

    **Kullanım Senaryosu:**

    * Sunucu yükünü azaltmak için
    * Rate limiting'den kaçınmak için
    * Geçici sorunların çözülmesi için zaman tanımak

    **Örnek:**

    * Yeniden Deneme Sayısı: `3`
    * Bekleme: `5` saniye
    * İlk istek başarısız → 5 sn bekle → 1. yeniden deneme → başarısız → 5 sn bekle → 2. yeniden deneme → başarılı
  </Accordion>
</AccordionGroup>

### Adım 7: Bildirim Alıcıları (Recipients)

Test başarısız olduğunda tetiklenecek bildirimleri yapılandırın:

#### Bildirim Ekleme

<Steps>
  <Step title="Bildirim Ekle">
    **Recipients** tablosunda **"+"** butonuna tıklayın
  </Step>

  <Step title="Bildirim Türünü Seçin">
    Bildirim türünü seçin:

    * **Email**: Email bildirimi gönderir
    * **Webhook**: HTTP POST isteği gönderir
    * **Slack**: Slack kanalına mesaj gönderir
    * **SMS**: SMS bildirimi gönderir
    * Ve daha fazlası...
  </Step>

  <Step title="Yapılandırmayı Tamamlayın">
    Bildirim yapılandırmasını tamamlayın
  </Step>
</Steps>

**Bildirim Yönetimi:**

* **Düzenle**: Bildirim bilgilerini güncellemek için menüden "Düzenle" seçin
* **Sil**: Bildirimi kaldırmak için menüden "Sil" seçin
* **Aktif/Pasif**: Toggle ile bildirimi aktif/pasif yapabilirsiniz

**Bildirim İçeriği:**
Bildirimlerde şu bilgiler gönderilir:

* Sağlık kontrolü adı
* Proxy adı (varsa)
* Hedef URL
* Hata mesajı
* Zaman damgası
* Test sonucu detayları

### Adım 8: Kaydetme

Tüm bilgileri doldurduktan sonra:

<Steps>
  <Step title="Validasyon Kontrolü">
    Form validasyonlarının geçtiğinden emin olun:

    * ✅ Ad girilmiş ve kullanılabilir
    * ✅ URL girilmiş
    * ✅ Zamanlama ayarları yapılmış
    * ✅ En az bir assertion aktif (önerilir)
  </Step>

  <Step title="Kaydet">
    **"Kaydet"** butonuna tıklayın
  </Step>

  <Step title="Yönlendirme">
    Sağlık kontrolü kaydedildikten sonra otomatik olarak listeleme sayfasına yönlendirilirsiniz
  </Step>
</Steps>

## Sonuçları İzleme ve Raporlama

### Sonuçlar Sayfasına Erişim

<Steps>
  <Step title="Listeden Erişim">
    Sağlık kontrolü listesinde kontrol adına tıklayın
  </Step>

  <Step title="Menüden Erişim">
    İşlemler menüsünden (⋮) **"Sonuçlar"** seçeneğini seçin
  </Step>
</Steps>

### Sonuçlar Sayfası Bölümleri

<AccordionGroup>
  <Accordion title="1. Üst Bilgi Bölümü">
    * **Tarih Aralığı Seçici**: Sonuçları belirli bir tarih aralığına göre filtreleyin
    * **Yenile Butonu**: Sonuçları manuel olarak yenileyin
    * **HTTP Metodu ve URL**: Test edilen endpoint bilgisi
  </Accordion>

  <Accordion title="2. Durum Özeti">
    Sayfanın üst kısmında sağlık kontrolünün genel durumu gösterilir:

    **Yanıt Süresi Grafiği:**

    * Zaman içindeki yanıt sürelerini gösteren çizgi grafik
    * X ekseni: Tarih/Saat
    * Y ekseni: Yanıt süresi (milisaniye)
    * Y ekseni: Yanıt süresi (milisaniye)
    * Grafik üzerinde hover yaparak detaylı bilgi görebilirsiniz

    **Ortalama Yanıt Süresi:**

    * Tüm testlerin ortalama yanıt süresi (milisaniye)
    * Büyük ve kalın yazıyla gösterilir
    * Performans değerlendirmesi için önemli bir metrik

    **Başarı Oranı:**

    * Başarılı testlerin toplam testlere oranı (yüzde)
    * Yeşil: İyi performans (%95+)
    * Sarı: Orta performans (%80-95)
    * Kırmızı: Düşük başarı oranı (%80 altı)

    <Frame caption="Durum özeti ve test sonuçları tablosu">
      <img src="https://mintcdn.com/apinizer/LoT_QidIA2t_0Oih/images/monitor/api-saglik-kontrolu/02-durum-ozeti-sonuclar.png?fit=max&auto=format&n=LoT_QidIA2t_0Oih&q=85&s=ba61dd78bff2c5b6aec631e06e8ace52" alt="Durum Özeti ve Sonuçlar" width="1000" height="800" style={{ borderRadius: '0.5rem' }} data-path="images/monitor/api-saglik-kontrolu/02-durum-ozeti-sonuclar.png" />
    </Frame>
  </Accordion>

  <Accordion title="3. Test Sonuçları Tablosu">
    Her test çalışmasının detaylı sonuçlarını gösteren tablo:

    **Sütunlar:**

    * **İstek Gönderildi**: Test isteğinin gönderildiği tarih ve saat
    * **İstek Tipi**:
    * **İlk İstek**: Normal test isteği
    * **Tekrar**: Yeniden deneme isteği
    * **Yanıt Süresi**: İsteğin yanıtlanma süresi (milisaniye)
    * **Teyitler**: Yapılan kontroller ve sonuçları:
    * ✅ **Timeout**: İstek zaman aşımına uğramadı
    * ✅ **Timeout**: İstek zaman aşımına uğramadı
    * ✅ **Status Code**: Beklenen HTTP status code döndü
    * ✅ **Result Body**: Response body doğrulandı
    * ✅ **XPath**: XPath kontrolü başarılı (XML için)
    * ✅ **JSONPath**: JSONPath kontrolü başarılı (JSON için)
    * **Sonuç**:
    * 🟢 **Başarılı**: Tüm kontroller geçti
    * 🔴 **Başarısız**: En az bir kontrol başarısız oldu
    * **Detay**: Sonuç detaylarını JSON formatında görüntülemek için göz ikonu (👁️)
  </Accordion>
</AccordionGroup>

#### Sonuç Detaylarını Görüntüleme

<Steps>
  <Step title="Detay Butonuna Tıklayın">
    Tablodaki **göz ikonu** (👁️) butonuna tıklayın
  </Step>

  <Step title="Detayları İnceleyin">
    Açılan dialog'da test sonucunun tüm detaylarını JSON formatında görüntüleyebilirsiniz:

    * Request bilgileri (URL, method, headers, body)
    * Response bilgileri (status code, headers, body)
    * Assertion sonuçları (her bir kontrolün sonucu)
    * Hata mesajları (varsa)
    * Hata mesajları (varsa)
    * Zaman damgaları
  </Step>
</Steps>

#### Tüm Sonuçları Silme

<Warning>
  Bu işlem geri alınamaz! Tüm geçmiş veriler kaybolur.
</Warning>

<Steps>
  <Step title="Sil Butonuna Tıklayın">
    Tablo başlığındaki **çöp kutusu** (🗑️) ikonuna tıklayın
  </Step>

  <Step title="Silme Tamamlandı">
    Tüm sonuçlar kalıcı olarak silinir
  </Step>
</Steps>

## Sağlık Kontrolü Yönetimi

### Liste Sayfası Özellikleri

Sağlık kontrolü listesi sayfasında tüm kontrollerinizi görüntüleyebilir ve yönetebilirsiniz.

<AccordionGroup>
  <Accordion title="Arama ve Filtreleme">
    * **İsim ile Arama**: İsim alanına yazarak kontrolleri filtreleyebilirsiniz
    * **Açıklama ile Arama**: Açıklama alanına yazarak arama yapabilirsiniz
    * **Proje Filtresi** (Admin modunda): Birden fazla projeden kontrolleri görüntüleyebilirsiniz
    * **Temizle**: Tüm filtreleri temizlemek için silgi ikonuna tıklayın
  </Accordion>

  <Accordion title="Tablo Sütunları">
    * **Ad**: Sağlık kontrolünün ismi (tıklanabilir, sonuç sayfasına gider)
    * **Açıklama**: Kontrol açıklaması
    * **Hedef URL**: Test edilen endpoint URL'i
    * **Durum**: Aktif/Pasif durumu (toggle ile değiştirilebilir)
    * **Proje** (Admin modunda): Kontrolün ait olduğu proje
    * **İşlemler**: Menü butonu (⋮)
  </Accordion>

  <Accordion title="İşlemler Menüsü">
    Her kontrol için menü butonuna (⋮) tıklayarak şu işlemleri yapabilirsiniz:

    1. **Sonuçlar**: Kontrolün çalışma sonuçlarını görüntüle
    2. **Düzenle**: Kontrol ayarlarını güncelle
    3. **Sil**: Kontrolü sil
    4. **Global'e Taşı** (Proje kontrolü ise): Kontrolü global projeye taşı
  </Accordion>

  <Accordion title="Durum Değiştirme">
    Kontrolün aktif/pasif durumunu değiştirmek için:

    <Steps>
      <Step title="Toggle'a Tıklayın">
        Tablodaki **Durum** sütunundaki toggle'a tıklayın
      </Step>

      <Step title="Durum Güncellendi">
        Kontrol durumu anında güncellenir
      </Step>

      <Step title="Pasif Kontroller">
        Pasif kontroller çalışmaz, ancak geçmiş verileri korunur
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## En İyi Uygulamalar

<CardGroup cols={2}>
  <Card title="1. İsimlendirme Kuralları" icon="tag">
    * **Açıklayıcı İsimler Kullanın**: `Ödeme API Kontrolü` gibi net isimler
    * **Proje/Modül Öneki Ekleyin**: `E-Ticaret - Ödeme API` gibi
    * **Ortam Bilgisi Ekleyin**: `Production - Kullanıcı API` gibi
  </Card>

  <Card title="2. Zamanlama Stratejisi" icon="clock">
    * **Kritik API'ler**: Her 5 dakikada bir kontrol edin
    * **Normal API'ler**: Her 15-30 dakikada bir kontrol edin
    * **Test Ortamları**: Her saat başı kontrol edin
    * **Sunucu yükünü** göz önünde bulundurun
  </Card>

  <Card title="3. Assertion Kullanımı" icon="check-circle">
    * **En az bir assertion** kullanın (Status Code önerilir)
    * **Timeout assertion**'ı mutlaka aktif edin
    * **Body assertion**'larını dikkatli kullanın (değişken içerik varsa)
    * **JSONPath/XPath** kullanarak spesifik kontroller yapın
  </Card>

  <Card title="4. Yeniden Deneme Stratejisi" icon="redo">
    * **Geçici sorunlar** için retry kullanın
    * **Retry sayısını** makul tutun (3-5 arası)
    * **Delay** kullanarak sunucu yükünü azaltın
    * **Rate limiting** durumlarında delay'i artırın
  </Card>

  <Card title="5. Bildirim Yönetimi" icon="bell">
    * **Kritik kontroller** için email + SMS bildirimi kullanın
    * **Webhook** kullanarak entegrasyon sistemlerinize bildirim gönderin
    * **Bildirim spam**'inden kaçınmak için filtreleme yapın
    * **Bildirim grupları** oluşturun
  </Card>

  <Card title="6. Performans İzleme" icon="chart-line">
    * **Yanıt sürelerini** düzenli olarak kontrol edin
    * **Başarı oranlarını** takip edin (%95+ hedefleyin)
    * **Trend analizi** yapın (grafikleri inceleyin)
    * **Anomali tespiti** için eşik değerleri belirleyin
  </Card>
</CardGroup>

## Sık Sorulan Sorular

<AccordionGroup>
  <Accordion title="Sağlık Kontrolü Ne Sıklıkla Çalışır?">
    Kontrolün çalışma sıklığı, oluştururken belirlediğiniz **Zamanlama** (Cron Expression) ayarlarına bağlıdır. Örneğin:

    * `0 */5 * ? * *` → Her 5 dakikada bir
    * `0 0 * ? * *` → Her saat başı
    * `0 0 9 * ? *` → Her gün saat 09:00
  </Accordion>

  <Accordion title="Kontrol Pasif Yapıldığında Ne Olur?">
    Kontrol pasif yapıldığında:

    * Yeni test istekleri gönderilmez
    * Mevcut zamanlanmış işler iptal edilir
    * Geçmiş sonuçlar korunur ve görüntülenebilir
    * Kontrol tekrar aktif yapıldığında normal çalışmaya devam eder
  </Accordion>

  <Accordion title="Yeniden Deneme Nasıl Çalışır?">
    "Başarısızsa Yeniden Dene" özelliği aktif edildiğinde:

    1. İlk istek gönderilir
    2. Eğer başarısız olursa (herhangi bir assertion başarısız)
    3. Belirlediğiniz sayı kadar tekrar denenir
    4. İstekler arası bekleme varsa, belirtilen süre kadar beklenir
    5. Tüm denemeler başarısız olursa, sonuç "Başarısız" olarak kaydedilir
  </Accordion>

  <Accordion title="Bildirimler Ne Zaman Gönderilir?">
    Bildirimler (Recipients) şu durumlarda tetiklenir:

    * Test başarısız olduğunda
    * Her başarısız test için ayrı bildirim gönderilir
    * Başarılı testlerde bildirim gönderilmez (varsayılan davranış)
  </Accordion>

  <Accordion title="Assertion Kontrolleri Nasıl Çalışır?">
    Assertion kontrolleri şu sırayla yapılır:

    1. **Timeout Kontrolü**: İstek belirlenen süre içinde yanıtlandı mı?
    2. **Status Code Kontrolü**: HTTP status code beklenen değerle eşleşiyor mu?
    3. **Body Kontrolü**: Response body beklenen içerikle eşleşiyor mu?
    4. **XPath Kontrolü**: XML response'ta XPath ifadesi doğru sonuç veriyor mu?
    5. **JSONPath Kontrolü**: JSON response'ta JSONPath ifadesi doğru sonuç veriyor mu?

    <Warning>
      **Önemli:** Tüm aktif assertion'lar başarılı olmalıdır. Herhangi biri başarısız olursa, test sonucu "Başarısız" olarak işaretlenir.
    </Warning>
  </Accordion>

  <Accordion title="Test Koleksiyonundan Seçme Ne İşe Yarar?">
    Test koleksiyonundan seçme özelliği, daha önce Test Console'da oluşturduğunuz test senaryolarını yeniden kullanmanızı sağlar. Bu sayede:

    * Zaman kazanırsınız
    * Tutarlı test senaryoları kullanırsınız
    * Test senaryolarınızı merkezi olarak yönetebilirsiniz
  </Accordion>

  <Accordion title="Kontrol Silindiğinde Ne Olur?">
    Kontrol silindiğinde:

    * Kontrol tanımı veritabanından silinir
    * Tüm test sonuçları silinir
    * Zamanlanmış işler iptal edilir
    * Geçmiş veriler kalıcı olarak kaybolur

    <Warning>
      Silme işlemi geri alınamaz!
    </Warning>
  </Accordion>

  <Accordion title="Sonuçlar Ne Kadar Süre Saklanır?">
    Sonuçlar, manuel olarak silinene kadar saklanır. Eski sonuçları temizlemek için:

    * Sonuçlar sayfasında "Tüm Sonuçları Sil" butonunu kullanabilirsiniz
    * Veya sonuçları düzenli olarak temizleyebilirsiniz
  </Accordion>

  <Accordion title="Birden Fazla Assertion Kullanabilir miyim?">
    Evet, birden fazla assertion kullanabilirsiniz. Tüm aktif assertion'lar başarılı olmalıdır. Örneğin:

    * Status Code: 200 ✅
    * Body içinde "success" metni ✅
    * JSONPath: `$.status` = "ok" ✅

    Tümü başarılı olursa test başarılı sayılır.
  </Accordion>

  <Accordion title="URL'de Dinamik Parametreler Kullanabilir miyim?">
    Hayır, URL'de dinamik parametreler kullanılamaz. Ancak:

    * Query parametreleri ekleyebilirsiniz
    * Headers'da dinamik değerler kullanabilirsiniz (bazı durumlarda)
    * Body'de dinamik içerik kullanabilirsiniz
  </Accordion>
</AccordionGroup>

## Sorun Giderme

<AccordionGroup>
  <Accordion title="Kontrol Çalışmıyor">
    **Olası Nedenler:**

    1. Kontrol pasif durumda olabilir → Durum toggle'ını kontrol edin
    2. Zamanlama ayarları yanlış olabilir → Cron expression'ı kontrol edin
    3. URL erişilebilir değil → URL'yi manuel olarak test edin

    **Çözüm:**

    * Kontrol durumunu aktif yapın
    * Zamanlama ayarlarını kontrol edin
    * URL'nin erişilebilir olduğundan emin olun
  </Accordion>

  <Accordion title="Tüm Testler Başarısız">
    **Olası Nedenler:**

    1. URL yanlış veya erişilebilir değil
    2. Assertion ayarları çok katı
    3. Timeout süresi çok kısa
    4. Authentication sorunları

    **Çözüm:**

    * URL'yi kontrol edin
    * Assertion ayarlarını gözden geçirin
    * Timeout süresini artırın
    * Headers'da authentication bilgilerini kontrol edin
  </Accordion>

  <Accordion title="Bildirimler Gelmiyor">
    **Olası Nedenler:**

    1. Bildirim pasif durumda
    2. Bildirim yapılandırması hatalı
    3. Email/SMS servisi çalışmıyor

    **Çözüm:**

    * Bildirim durumunu aktif yapın
    * Bildirim yapılandırmasını kontrol edin
    * Email/SMS servis ayarlarını kontrol edin
  </Accordion>

  <Accordion title="Yanıt Süreleri Çok Yüksek">
    **Olası Nedenler:**

    1. API performans sorunları
    2. Network gecikmeleri
    3. Sunucu yükü

    **Çözüm:**

    * API performansını optimize edin
    * Network bağlantısını kontrol edin
    * Sunucu kaynaklarını kontrol edin
  </Accordion>

  <Accordion title="Sonuçlar Görünmüyor">
    **Olası Nedenler:**

    1. Kontrol henüz çalışmadı
    2. Tarih aralığı filtresi yanlış
    3. Sonuçlar silinmiş olabilir

    **Çözüm:**

    * Kontrolün çalıştığından emin olun
    * Tarih aralığı filtresini kontrol edin
    * Sonuçların silinmediğinden emin olun
  </Accordion>
</AccordionGroup>

## Ek Kaynaklar

<CardGroup cols={2}>
  <Card title="Test Console Kullanım Kılavuzu" icon="code" href="/tr/develop/test-debug-araclari/test-console">
    Test senaryoları oluşturma
  </Card>

  <Card title="Konnektörler" icon="bell" href="/tr/integrations/konnektorler/genel-bakis">
    Bildirim ve eylem yapılandırması
  </Card>

  <Card title="Zamanlanmış İşler" icon="clock" href="/tr/admin/zamanlanmis-isler">
    Zamanlama ayarları ve cron expression
  </Card>

  <Card title="API Dokümantasyonu" icon="book" href="/api-reference/overview">
    REST API kullanımı
  </Card>
</CardGroup>
