# OnlyCoin API Özeti — v1.1.0

Bütün mutation isteklerinde `Content-Type: application/json` kullanılmalıdır. Oturumlar `HttpOnly` cookie veya yetkili bearer token üzerinden doğrulanır. Hatalar şu biçimdedir:

```json
{
  "code": "MACHINE_READABLE_CODE",
  "message": "Kullanıcıya uygun açıklama",
  "requestId": "...",
  "details": {}
}
```

## Kurulum

```text
GET  /api/install/status
POST /api/install/test-smtp
POST /api/install/complete
GET  /api/health
```

Kurulum tamamlanmadan yalnızca kurulum ve sağlık endpointleri kullanılabilir.

## Üyelik

```text
GET  /api/public/auth
POST /api/auth/register
POST /api/auth/email/verify
POST /api/auth/email/resend
POST /api/auth/email/login
POST /api/auth/password/request
POST /api/auth/password/reset
POST /api/auth/logout
GET  /api/auth/me
GET  /api/auth/oauth/:provider/start
GET  /api/auth/oauth/:provider/callback
POST /api/auth/oauth/exchange
POST /api/auth/telegram
```

Kayıt doğrulama kodu production API cevabına eklenmez; SMTP ile gönderilir.

## Public içerik

```text
GET /api/public/config
GET /api/public/site
GET /api/public/payments
GET /api/public/presale
```

## Oyun

```text
GET  /api/game/state
POST /api/game/tap
GET  /api/game/quests
POST /api/game/quests/:id/claim
POST /api/game/wheel/spin
GET  /api/game/leaderboard
GET  /api/game/referrals
POST /api/game/points/transfer
POST /api/game/points/convert
```

Tap, görev, çark ve transfer sonuçları sunucu tarafında hesaplanır. Mutation isteklerinde idempotency anahtarı kullanılır.

## Cüzdan ve presale

```text
GET  /api/wallet
GET  /api/wallet/managed
POST /api/wallet/testnet
POST /api/wallet/testnet/verify-password
GET  /api/wallet/recovery/:token
POST /api/wallet/mainnet
POST /api/wallet/mainnet/confirm
POST /api/presale/orders
GET  /api/presale/me
POST /api/deposits
POST /api/withdrawals
```

## Ödeme

```text
GET  /api/public/payments
POST /api/payments/checkout
GET  /api/payments/checkout/:id
POST /api/webhooks/paytr
POST /api/webhooks/generic/:providerId
```

Webhook imzaları ve sağlayıcı işlem kimlikleri doğrulanmadan bakiye veya entitlement üretilmez.

## Admin

```text
POST /api/admin/login
POST /api/admin/logout
GET  /api/admin/me
GET  /api/admin/dashboard
GET  /api/admin/users
GET  /api/admin/ledger
GET  /api/admin/audit
GET  /api/admin/site
GET  /api/admin/presale
GET  /api/admin/payments/settings
GET  /api/admin/wallets
GET  /api/admin/distribution
GET  /api/admin/email/outbox
```

Admin mutation rotaları owner/admin oturumu ve audit kaydı gerektirir. Bakiye doğrudan güncellenmez; ledger işlemi veya onaylı iş akışı kullanılır.
