# API Dokümantasyonu
YouTube Transcript RSS Feed API'si, YouTube kanallarının video transcript'lerini RSS/Atom feed formatında sunar.
## Base URL
```
http://localhost:5000
```
Production için base URL değişebilir.
## Authentication
**Tüm endpoint'ler API key gerektirir.**
API key'i iki şekilde gönderebilirsiniz:
### 1. HTTP Header (Programatik kullanım için önerilen)
```http
X-API-Key: your_api_key_here
```
**Not:** RSS okuyucular HTTP header gönderemediği için bu yöntem sadece programatik kullanım için uygundur.
### 2. Query Parameter (RSS okuyucular ve tarayıcılar için zorunlu)
```
?api_key=your_api_key_here
```
**Önemli:** RSS okuyucular, tarayıcılar ve feed aggregator'lar için **mutlaka query parameter** kullanılmalıdır çünkü bu uygulamalar HTTP header gönderemez.
**Güvenlik Notu:** API key'i URL'de kullanmak güvenlik açısından ideal değildir çünkü:
- URL'ler log dosyalarında, tarayıcı geçmişinde ve referrer header'larında görünebilir
- Ancak RSS okuyucular için bu tek seçenektir
- Production'da farklı API key'ler kullanarak riski azaltabilirsiniz
- API key'lerinizi düzenli olarak rotate edin
### API Key Alma
API key'ler `config/security.yaml` dosyasından yönetilir. Yeni bir API key eklemek için:
```yaml
security:
api_keys:
your_api_key_here:
name: "Your API Key Name"
rate_limit: 100 # Dakikada maksimum istek
enabled: true
```
### Hata Yanıtları
**401 Unauthorized** - API key eksik veya geçersiz:
```json
{
"error": "Geçersiz veya eksik API key",
"message": "X-API-Key header veya api_key query parametresi gerekli"
}
```
**429 Too Many Requests** - Rate limit aşıldı:
```json
{
"error": "Rate limit aşıldı",
"message": "Dakikada 100 istek limiti",
"retry_after": 60
}
```
## Rate Limiting
Her API key için dakikada maksimum istek sayısı tanımlanır. Rate limit bilgisi response header'ında döner:
```
X-RateLimit-Remaining: 45
```
Rate limit aşıldığında `429 Too Many Requests` hatası döner.
## Endpoints
### 1. RSS/Atom Feed Oluştur
YouTube kanalı için transcript feed'i oluşturur.
**Endpoint:** `GET /`
**Query Parameters:**
| Parametre | Tip | Zorunlu | Açıklama |
|-----------|-----|---------|----------|
| `api_key` | string | ✅ | API key (header ile de gönderilebilir) |
| `channel_id` | string | ⚠️* | YouTube Channel ID (UC ile başlar, 24 karakter) |
| `channel` | string | ⚠️* | Channel handle (@username veya username) |
| `channel_url` | string | ⚠️* | Full YouTube channel URL |
| `format` | string | ❌ | Feed formatı: `Atom` (varsayılan) veya `Rss` |
| `max_items` | integer | ❌ | Maksimum transcript sayısı (varsayılan: 10, max: 100, 20'şer batch'ler halinde işlenir) |
\* `channel_id`, `channel` veya `channel_url` parametrelerinden biri zorunludur.
**Örnek İstekler:**
**URL-Based Sorgular (RSS Okuyucular ve Tarayıcılar için):**
```bash
# Channel ID ile (API key URL'de)
http://localhost:5000/?channel_id=UC9h8BDcXwkhZtnqoQJ7PggA&api_key=demo_key_12345&format=Atom
# Channel handle ile (API key URL'de)
http://localhost:5000/?channel=@tavakfi&api_key=demo_key_12345&format=Atom&max_items=10
# Channel URL ile (API key URL'de) - ÖNERİLEN
http://localhost:5000/?channel_url=https://www.youtube.com/@tavakfi&api_key=demo_key_12345&format=Atom&max_items=50
# RSS format ile
http://localhost:5000/?channel_url=https://www.youtube.com/@politicalfronts&api_key=demo_key_12345&format=Rss&max_items=20
```
**Programatik Kullanım (HTTP Header ile):**
```bash
# Channel ID ile (Header'da API key)
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel_id=UC9h8BDcXwkhZtnqoQJ7PggA&format=Atom"
# Channel handle ile (Header'da API key)
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel=@tavakfi&format=Atom"
# Channel URL ile (Header'da API key)
curl -H "X-API-Key: demo_key_12345" \
"http://localhost:5000/?channel_url=https://www.youtube.com/@tavakfi&format=Atom&max_items=50"
```
**Production URL Örnekleri:**
```
# Production URL ile Channel URL kullanımı
https://yt2feed.aligundogar.com.tr/?channel_url=https://www.youtube.com/@politicalfronts&api_key=your_api_key&format=Atom
# Production URL ile Channel ID kullanımı
https://yt2feed.aligundogar.com.tr/?channel_id=UC9h8BDcXwkhZtnqoQJ7PggA&api_key=your_api_key&format=Rss&max_items=50
```
**Başarılı Yanıt:**
**Atom Format:**
```xml
UC9h8BDcXwkhZtnqoQJ7PggAYouTube Transcript Feed - UC9h8BDcXwkhZtnqoQJ7PggA2025-01-13T00:30:36+00:00r5KfWUv6wqQVideo Title