# Hata Kodları Referansı

Onoxsoft Panel API'si makine okunabilir hata kodları döner. Bu sayfa tüm hata kodlarını ve açıklamalarını içerir.

## Hata Yanıt Formatı

```json
{
    "success": false,
    "error": {
        "code": "HATA_KODU",
        "message": "İnsan okunabilir açıklama",
        "details": {}
    },
    "meta": { "request_id": "req_01HX..." }
}
```

## HTTP 400 — Geçersiz İstek

| Kod | Açıklama |
|-----|----------|
| `INVALID_REQUEST` | Genel geçersiz istek |
| `VALIDATION_ERROR` | Doğrulama hatası (details içinde alan adları) |
| `INVALID_USERNAME` | Kullanıcı adı kurallara uymuyor (3-16 karakter, [a-z0-9_]) |
| `INVALID_DOMAIN` | Geçersiz domain formatı |
| `INVALID_PHP_VERSION` | Desteklenmeyen PHP sürümü |
| `INVALID_SCOPE` | Geçersiz API token kapsamı |

## HTTP 401 — Kimlik Doğrulama Hatası

| Kod | Açıklama |
|-----|----------|
| `UNAUTHENTICATED` | Authorization başlığı eksik |
| `INVALID_TOKEN` | Token geçersiz veya süresi dolmuş |
| `TOKEN_EXPIRED` | Token süresi geçti |
| `HMAC_INVALID` | HMAC imzası doğrulanamadı |
| `HMAC_TIMESTAMP_EXPIRED` | İmza zaman damgası ±300 saniyeyi aştı |

## HTTP 403 — Yetki Hatası

| Kod | Açıklama |
|-----|----------|
| `FORBIDDEN` | Bu işlem için yetki yok |
| `INSUFFICIENT_SCOPE` | Token gerekli kapsamı içermiyor |
| `IP_NOT_ALLOWED` | İstek yapılan IP token'ın izin verilen IP listesinde değil |
| `ACCOUNT_ACCESS_DENIED` | Başka bir kullanıcının hesabına erişim denemesi |

## HTTP 404 — Bulunamadı

| Kod | Açıklama |
|-----|----------|
| `NOT_FOUND` | Kaynak bulunamadı |
| `ACCOUNT_NOT_FOUND` | Belirtilen kullanıcı adıyla hesap yok |
| `DOMAIN_NOT_FOUND` | Domain bu hesapta yok |
| `DATABASE_NOT_FOUND` | Veritabanı bulunamadı |
| `ZONE_NOT_FOUND` | DNS bölgesi bulunamadı |

## HTTP 409 — Çakışma

| Kod | Açıklama |
|-----|----------|
| `ALREADY_EXISTS` | Kaynak zaten mevcut |
| `USERNAME_TAKEN` | Bu kullanıcı adı alınmış |
| `DOMAIN_ALREADY_EXISTS` | Bu domain başka hesapta mevcut |
| `DATABASE_ALREADY_EXISTS` | Bu veritabanı adı zaten kullanımda |

## HTTP 422 — İşlenemez Varlık

| Kod | Açıklama |
|-----|----------|
| `ACCOUNT_LIMIT_EXCEEDED` | Paket hesap sınırına ulaşıldı |
| `DISK_LIMIT_EXCEEDED` | Disk kotası aşıldı |
| `DOMAIN_LIMIT_EXCEEDED` | Paket domain sınırına ulaşıldı |
| `DATABASE_LIMIT_EXCEEDED` | Veritabanı sınırına ulaşıldı |
| `ACCOUNT_SUSPENDED` | İşlem askıya alınmış hesapta yapılamaz |

## HTTP 429 — Rate Limit

| Kod | Açıklama |
|-----|----------|
| `RATE_LIMIT_EXCEEDED` | İstek sınırı aşıldı, `retry_after` saniye bekleyin |

## HTTP 500/503 — Sunucu Hatası

| Kod | Açıklama |
|-----|----------|
| `INTERNAL_ERROR` | Beklenmeyen sunucu hatası, loglara bakın |
| `SYSAPI_FAILED` | İşletim sistemi işlemi başarısız (sysapi hata) |
| `SERVICE_UNAVAILABLE` | Servis geçici olarak kullanılamıyor |
| `DATABASE_CONNECTION_FAILED` | Veritabanı bağlantı sorunu |

## Doğrulama Hatası Detayları

`VALIDATION_ERROR` durumunda `details` içinde hangi alanın hatalı olduğu belirtilir:

```json
{
    "success": false,
    "error": {
        "code": "VALIDATION_ERROR",
        "message": "Giriş doğrulaması başarısız.",
        "details": {
            "username": ["Kullanıcı adı en az 3 karakter olmalı."],
            "domain": ["Geçerli bir domain adresi girin."],
            "password": ["Şifre en az 12 karakter, 1 büyük harf ve 1 rakam içermeli."]
        }
    }
}
```
