# Rate Limiting

Onoxsoft Panel API'si, kötüye kullanımı önlemek için istek sınırlaması uygular.

## Varsayılan Limitler

| Token Tipi | Limit | Pencere |
|-----------|-------|---------|
| Admin token | 120 istek | 1 dakika |
| Reseller token | 60 istek | 1 dakika |
| Müşteri token | 30 istek | 1 dakika |
| Kimlik doğrulamasız | 10 istek | 1 dakika |

## Rate Limit Başlıkları

Her yanıtta limit bilgisi başlıklarla iletilir:

```http
HTTP/1.1 200 OK
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1748808060
```

## Limit Aşıldığında

```http
HTTP/1.1 429 Too Many Requests
Retry-After: 47
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1748808060

{
    "success": false,
    "error": {
        "code": "RATE_LIMIT_EXCEEDED",
        "message": "Rate limit aşıldı. 47 saniye sonra tekrar deneyin.",
        "retry_after": 47
    }
}
```

## İstemci Tarafı Best Practices

```python
import time
import requests

def api_request_with_retry(url, headers, data=None, max_retries=3):
    for attempt in range(max_retries):
        resp = requests.get(url, headers=headers)

        if resp.status_code == 429:
            retry_after = int(resp.headers.get('Retry-After', 60))
            print(f"Rate limited. Waiting {retry_after}s...")
            time.sleep(retry_after)
            continue

        return resp

    raise Exception("Max retries exceeded")
```

## Özel Limit Yapılandırması

Admin için `.env`:

```ini
RATE_LIMIT_ADMIN=120
RATE_LIMIT_RESELLER=60
RATE_LIMIT_CUSTOMER=30
RATE_LIMIT_WINDOW=60   # saniye
```

---

*Token bazlı özel rate limit ve IP whitelist desteği v0.20'de eklenecek.*
