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

# FTP List Konnektör

> FTP bağlantı tanımlarını kullanarak dosya ve dizin listeleme işlemlerini gerçekleştirebilir ve API Proxy'ler oluşturabilirsiniz. FTP bağlantınızdaki tanımlı dizin içerisindeki dosyaları gelişmiş filtreleme ve arama özellikleri ile listeleyebilir ve bu listeleme işleminin sonucunu dönen API Proxy'ler oluşturabilirsiniz.

<img src="https://mintcdn.com/apinizer/-OUVpYz7x56LFQ3F/images/yonetici/konnektor/ftp-list.png?fit=max&auto=format&n=-OUVpYz7x56LFQ3F&q=85&s=f498e32399b18a129b7060bdac69176f" alt="FTP List Konnektör Konfigürasyonu" width="800" className="mr-auto" data-path="images/yonetici/konnektor/ftp-list.png" />

## Kullanım

FTP List konnektörü, FTP sunucusundaki dosya ve dizinleri listelemek için kullanılır. Oluşturulan konnektör bir API Proxy olarak çalışır ve HTTP GET veya POST isteği ile tetiklenebilir. POST isteği kullanıldığında, gelişmiş filtreleme kriterleri ile dosyaları arayabilir ve filtreleyebilirsiniz.

### Temel Kullanım (GET İsteği)

Basit bir GET isteği ile dizindeki tüm dosyaları alabilirsiniz:

```bash theme={null}
curl --location --request GET "https://<APINIZER_ACCESS_URL>/<RELATIVE_PATH>"
```

### Gelişmiş Kullanım (POST İsteği)

POST isteği ile istek gövdesi göndererek filtreleme kriterleri uygulayabilirsiniz:

```bash theme={null}
curl --location --request POST "https://<APINIZER_ACCESS_URL>/<RELATIVE_PATH>" \
  -H "Content-Type: application/json" \
  --data-raw '{"searchType": "WILDCARD", "searchPattern": "*.json", "caseInsensitive": true}'
```

<Info>
  İstek gövdesi boş gönderildiğinde veya GET isteği yapıldığında, dizindeki tüm dosyalar varsayılan değerler ile listelenir.
</Info>

## İstek Gövdesi Parametreleri

<AccordionGroup>
  <Accordion title="Dosya Arama Ayarları">
    <CardGroup cols={2}>
      <Card title="searchType" icon="magnifying-glass">
        **Tip:** string

        **Varsayılan Değer:** STARTS\_WITH

        **Açıklama:** Dosya adlarının nasıl aranacağını belirtir. Kullanılabilir seçenekler:

        * **STARTS\_WITH**: Dosya adının verilen desenle başlayıp başlamadığını kontrol eder
        * **EXACT\_MATCH**: Verilen dosya adı ile tam eşleşme kontrolü yapar
        * **CONTAINS**: Dosya adının içinde verilen deseni içerip içermediğini kontrol eder
        * **ENDS\_WITH**: Dosya adının verilen desenle bitip bitmediğini kontrol eder
        * **WILDCARD**: Joker karakter eşleştirmesi kullanır (\* herhangi bir dizi ile eşleşir, ? tek karakter ile eşleşir)
      </Card>

      <Card title="searchPattern" icon="filter">
        **Tip:** string

        **Varsayılan Değer:** (boş - tüm dosyaları listeler)

        **Açıklama:** Aranacak dosya adı veya deseni. Kullanım searchType'a göre değişir:

        * WILDCARD için: `*.json`, `dosya?.txt`, `rapor_*.pdf`
        * ENDS\_WITH için: `.json`, `.pdf`
        * STARTS\_WITH için: `fatura_`, `rapor`
        * CONTAINS için: `2025`, `veri`
        * EXACT\_MATCH için: `rapor.pdf`, `veri.json`
      </Card>

      <Card title="caseInsensitive" icon="font">
        **Tip:** boolean

        **Varsayılan Değer:** true

        **Açıklama:** Dosya adı aramasının büyük/küçük harf duyarlı olup olmayacağını belirler. true olduğunda "Dosya.txt" ve "dosya.txt" aynı kabul edilir.
      </Card>

      <Card title="returnType" icon="list">
        **Tip:** string

        **Varsayılan Değer:** ALL\_MATCHES

        **Açıklama:** Döndürülecek sonuç miktarını belirtir:

        * **FIRST\_MATCH**: Sadece ilk eşleşen dosyayı döndürür ve aramayı durdurur
        * **ALL\_MATCHES**: Tüm eşleşen dosyaları döndürür
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Dosya Boyutu Sınırlaması">
    <Card title="maxFileSizeKB" icon="gauge">
      **Tip:** integer

      **Varsayılan Değer:** (sınır yok)

      **Açıklama:** Maksimum dosya boyutu kilobayt (KB) cinsinden. Bu boyuttan büyük dosyalar sonuçlardan hariç tutulur. Örneğin 10240 değeri sadece 10 MB'a kadar olan dosyaların dahil edileceği anlamına gelir.

      **Not:** Bu parametre sadece listeleme sonuçlarındaki dosya boyutu filtrelemesini etkiler. Dosya okuma işlemini sınırlamaz.
    </Card>
  </Accordion>
</AccordionGroup>

## Yanıt Formatı

Yanıt, istekteki Accept başlığına göre JSON veya XML formatında döndürülür.

### Başarılı Yanıt (Dosyalar Bulundu)

```json theme={null}
{
  "files": [
    "fatura_2025_001.pdf",
    "fatura_2025_002.pdf",
    "rapor.json"
  ],
  "count": 3,
  "searchType": "starts_with",
  "caseInsensitive": true,
  "returnType": "all_matches"
}
```

### Boş Yanıt (Dosya Bulunamadı)

```json theme={null}
{
  "files": [],
  "count": 0,
  "message": "No files matching pattern '*.xml'",
  "searchType": "wildcard",
  "caseInsensitive": true,
  "returnType": "all_matches"
}
```

<Info>
  Dosya bulunamadığında, `message` alanı neden sonuç döndürülmediği hakkında bilgi verir.
</Info>

## Örnek Senaryolar

### Örnek 1: Tüm JSON Dosyalarını Listeleme

**Kullanım Senaryosu**: Dizindeki .json uzantılı tüm dosyaları bulma

```json theme={null}
{
  "searchType": "WILDCARD",
  "searchPattern": "*.json",
  "caseInsensitive": true
}
```

**Yanıt:**

```json theme={null}
{
  "files": ["veri.json", "ayar.json", "rapor.json"],
  "count": 3,
  "message": null
}
```

### Örnek 2: "fatura" ile Başlayan Dosyaları Bulma

**Kullanım Senaryosu**: "fatura" öneki ile başlayan tüm dosyaları listeleme

```json theme={null}
{
  "searchType": "STARTS_WITH",
  "searchPattern": "fatura",
  "caseInsensitive": false,
  "returnType": "ALL_MATCHES"
}
```

### Örnek 3: İlk PDF Dosyasını Bulma

**Kullanım Senaryosu**: Sadece ilk PDF dosyasını al ve aramayı durdur

```json theme={null}
{
  "searchType": "ENDS_WITH",
  "searchPattern": ".pdf",
  "returnType": "FIRST_MATCH"
}
```

**Yanıt:**

```json theme={null}
{
  "files": ["rapor.pdf"],
  "count": 1
}
```

### Örnek 4: Tam Dosya Adı Eşleşmesi

**Kullanım Senaryosu**: Belirli bir dosyanın var olup olmadığını kontrol etme

```json theme={null}
{
  "searchType": "EXACT_MATCH",
  "searchPattern": "ayar.json"
}
```

### Örnek 5: Çoklu Desen ile Joker Karakter Kullanımı

**Kullanım Senaryosu**: Karmaşık desenlere uyan dosyaları bulma

```json theme={null}
{
  "searchType": "WILDCARD",
  "searchPattern": "rapor_2025_??.pdf"
}
```

Bu desen şu dosyalarla eşleşir: `rapor_2025_01.pdf`, `rapor_2025_12.pdf` ancak `rapor_2025_123.pdf` ile eşleşmez

### Örnek 6: İçinde Belirli Metin Geçen Dosyalar

**Kullanım Senaryosu**: Adında "yedek" geçen tüm dosyaları bulma

```json theme={null}
{
  "searchType": "CONTAINS",
  "searchPattern": "yedek",
  "caseInsensitive": true,
  "maxFileSizeKB": 50000
}
```

Bu desen şu dosyalarla eşleşir: `gunluk_yedek.zip`, `yedek_2025.tar.gz`, `vt_yedek_tam.sql`

### Örnek 7: Büyük/Küçük Harfe Duyarlı Arama

**Kullanım Senaryosu**: Tam harf eşleşmesi ile dosya bulma

```json theme={null}
{
  "searchType": "STARTS_WITH",
  "searchPattern": "Rapor",
  "caseInsensitive": false
}
```

Bu desen:

* ✅ `Rapor_2025.pdf` ile eşleşir
* ❌ `rapor_2025.pdf` ile eşleşmez (küçük harf 'r')
* ❌ `RAPOR_2025.pdf` ile eşleşmez (tümü büyük harf)

## Yanıt İçerik Tipi

Konnektör, Accept başlığına göre yanıt döndürür:

* **application/json** (varsayılan): JSON formatında yanıt döndürür
* **application/xml**: XML formatında yanıt döndürür

XML ile örnek istek:

```bash theme={null}
curl --location --request POST "https://<APINIZER_ACCESS_URL>/<RELATIVE_PATH>" \
  -H "Accept: application/xml" \
  -H "Content-Type: application/json" \
  --data-raw '{"searchPattern": "*.json"}'
```

## En İyi Uygulamalar

<CardGroup cols={2}>
  <Card title="maxFileSizeKB Kullanın" icon="shield">
    Çok büyük dosyaların indirilmesini önlemek için makul bir `maxFileSizeKB` sınırı belirleyin.
  </Card>

  <Card title="FIRST_MATCH Kullanın" icon="gauge-high">
    Sadece bir dosyaya ihtiyacınız varsa, performansı artırmak için `returnType: "FIRST_MATCH"` kullanın. İlk eşleşmeden sonra arama durur.
  </Card>

  <Card title="Joker Karakterler" icon="wand-magic-sparkles">
    * `*` sıfır veya daha fazla karakter ile eşleşir
    * `?` tam olarak bir karakter ile eşleşir
    * Karmaşık desenler için birleştirin: `dosya_*.???` şu dosyalarla eşleşir `dosya_veri.txt`, `dosya_test.pdf`
  </Card>

  <Card title="Case Sensitivity" icon="font">
    Türkçe karakterler için `caseInsensitive: true` kullanmanız önerilir. Bu sayede "Dosya.txt", "dosya.txt" ve "DOSYA.txt" aynı kabul edilir.
  </Card>
</CardGroup>
