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

# Kanal Engel Listesi API

> İletişim kanalları üzerinden gelen istenmeyen adresleri (spam, kötüye kullanım vb.) engellemek ve engeli yönetmek için endpoint'ler.

<Note>
  Tüm isteklerde `X-Tenant` header'ı **zorunludur**. İşlemler yalnızca belirtilen tenant'a ait kanal engel kayıtları ile sınırlandırılmıştır.
</Note>

## Endpoint özeti

| Metot    | Endpoint                          | Açıklama                                 |
| -------- | --------------------------------- | ---------------------------------------- |
| `GET`    | `/api/v1/channel-blacklists`      | Engel listesini filtreli olarak listeler |
| `GET`    | `/api/v1/channel-blacklists/{id}` | Tek bir engel kaydını getirir            |
| `POST`   | `/api/v1/channel-blacklists`      | Yeni engel kaydı oluşturur               |
| `PUT`    | `/api/v1/channel-blacklists/{id}` | Engel kaydını günceller                  |
| `DELETE` | `/api/v1/channel-blacklists/{id}` | Engeli kaldırır                          |

<Tip>
  Tüm parametreler, alanlar ve örnek istek/yanıtlar için **[API Referansı](/api-reference)** sekmesine bakın.
</Tip>

## Kanal engel listesi kavramı

Kanal engel listesi, belirli bir iletişim kanalı üzerinden gelen istenmeyen adresleri (spam, kötüye kullanım vb.) engellemek için kullanılır. Bir kayıt; engellenecek kanal, müşteri, engel nedeni (`SpamType`) ve opsiyonel olarak geçerlilik süresi (`ttl_seconds`) ile yönetilir.

## İş kuralları

<Warning>
  **Engel süresi:** `ttl_seconds` gönderilmezse engel **kalıcıdır**. Belirli bir süre için engellemek istiyorsanız saniye cinsinden değer gönderin (örn. 86400 → 1 gün).
</Warning>

<Warning>
  **`DELETE` kaydı silmez:** `DELETE /channel-blacklists/{id}` işlemi kaydı veritabanından kaldırmaz; yalnızca `is_active = false` set eder (engeli kaldırır / unblock).
</Warning>

<Note>
  **`expires_at` güncellemesi:** `PUT` isteğinde `expires_at` alanı `null` gönderilirse mevcut süreli engel **kalıcı engele** dönüştürülür.
</Note>

<Note>
  **`metadata` birleştirme:** `PUT` isteğinde gönderilen `metadata`, mevcut değerin **üzerine yazılmaz**; mevcut metadata ile **merge** edilir.
</Note>

## Yetkilendirme

### Uygulama izinleri (permissions)

| İşlem                    | Permission                 |
| ------------------------ | -------------------------- |
| Listeleme                | `ViewAny:ChannelBlacklist` |
| Detay / Tek gösterme     | `View:ChannelBlacklist`    |
| Oluşturma                | `Create:ChannelBlacklist`  |
| Güncelleme               | `Update:ChannelBlacklist`  |
| Engeli kaldırma (DELETE) | `Delete:ChannelBlacklist`  |

### Token scope'ları (Passport)

| İşlem                                | Scope                      |
| ------------------------------------ | -------------------------- |
| Okuma (`index`, `show`)              | `channel_blacklists:read`  |
| Yazma (`store`, `update`, `destroy`) | `channel_blacklists:write` |
