# `api/` klasörü — dosya ve bağlantı özeti

Bu proje, **Cronos** panelinin HTTP API’sine (`/_api/...`) benzer isteklerle proxy/uyarlama yapan PHP uçları ve yerel bonus/promo mantığını içerir. Çoğu `call_*.php` dosyası: MySQL’deki oturum (`api_sessions`) + `TokenManager` ile **Bearer token** alır ve `CronosHttp` üzerinden Cronos sunucusuna gider.

**Temel zincir:** `config.php` → (`bootstrap.php` + `Db.php` + `TokenManager.php`) → `cronos_bearer_token()` → `CronosHttp::jsonRequest`.

---

## Yapılandırma ve ortak yük

| Dosya | İşlev |
|--------|--------|
| `config.php` | Varsayılan ayarlar (DB DSN, Cronos `default_base_url`, cookie jar, rate limit, `admin_web_base`). `config.local.php` ile birleştirilir. |
| `config.local.php` | Yerel override (şifreler, `sync_secret`, `cronos_login`, rate limit). Repoda hassas veri tutulmamalı. |
| `config.local.example.php` | `config.local.php` için örnek şablon (`sync_secret`, TOTP vb.). |
| `bootstrap.php` | `call_*` proxy’lerinin ortak girişi: timezone, `Db`, `TokenManager`, `cronos_pdo()`, `cronos_bearer_token()`. |

---

## Kimlik ve hesap (Cronos)

| Dosya | Cronos / işlev |
|--------|----------------|
| `call_login.php` | `TokenManager::forceLogin` — kimlik bilgileri DB (`api_credentials`), token `api_sessions`. Eşzamanlılık için dosya kilidi. |
| `call_account.php` | `GET /_api/account` — oturum hesabı; token gerekirse yenilenir. |

---

## Üye ve panel verisi (`GET /_api/...` proxy’leri)

Tümü JSON döner; token boş/Cloudflare vb. durumlarda uygun HTTP kodları kullanılır.

| Dosya | Cronos uç noktası / kısa açıklama |
|--------|-----------------------------------|
| `call_customers.php` | `GET /_api/customers` — üye listesi (`per_page`, `page`, `sort_method`, `username`, `status`). |
| `call_customer_detail.php` | `GET /_api/customers/{customer_id}` — üye özeti. |
| `call_options.php` | `GET /_api/options` — panel seçenekleri; `customer_id`/`player_id` ile Referer uyumu. |
| `call_casino_providers.php` | `GET /_api/casino/providers` — sağlayıcı listesi; isteğe bağlı `player_id`. |
| `call_bonuses.php` | `GET /_api/bonuses` — bonus listesi (yönetici listesi). |
| `call_bonuses_player.php` | `GET /_api/bonuses/player/{player_id}` — üyenin bonus geçmişi; tarih aralığı + `LossWindowFinance` ile URL/ sayfa uyumu. **Not:** `api/lib/motors/LossWindowFinance.php` bu repoda listelenmiyor; çalışma için gerekli. |
| `call_financial_transactions.php` | `GET /_api/financial/transactions` — global finans işlemleri (`bonus=2` örnek HAR uyumu). |
| `call_games_transactions.php` | `GET /_api/games/transactions` — oyun işlemleri (`player_id` zorunlu). |
| `call_sports_bc_coupons.php` | `GET /_api/sports/bc-coupons` — spor BC kuponları; `status` sekmesi kodları dokümanda. |

### Üye detay alt sayfaları (`call_customers_*`, `call_players_*`)

| Dosya | Cronos uç noktası |
|--------|-------------------|
| `call_customers_affiliates.php` | `GET /_api/customers/affiliates` |
| `call_customers_chart_data.php` | `GET /_api/customers/chart-data/{customer_id}` |
| `call_customers_documents.php` | `GET /_api/customers/documents/{customer_id}` |
| `call_customers_financial_transactions.php` | `GET /_api/customers/financial-transactions/{customer_id}` |
| `call_customers_free_spin.php` | `GET /_api/customers/free-spin/{customer_id}` |
| `call_customers_limits.php` | `GET /_api/customers/limits/{customer_id}` |
| `call_customers_log_details.php` | `GET /_api/customers/log-details` |
| `call_customers_manager_logs.php` | `GET /_api/customers/manager-logs/{customer_id}` |
| `call_customers_note_history.php` | `GET /_api/customers/note-history/{customer_id}` |
| `call_customers_player_logs.php` | `GET /_api/customers/player-logs` |
| `call_customers_poker_transactions.php` | `GET /_api/customers/poker-transactions/{customer_id}` |
| `call_customers_session_history.php` | `GET /_api/customers/session-history/{customer_id}` |
| `call_players_general_limit.php` | `GET /_api/players/general-limit/{player_id}` |
| `call_players_banned_payment_methods.php` | `GET /_api/players/banned-payment-methods/{player_id}` |

---

## Bonus ön kontrol, değerlendirme ve Cronos’a yazma

| Dosya | İşlev |
|--------|--------|
| `call_bonus_prechecks.php` | `BonusPrechecks::run` — açık kupon, IP çakışması, bekleyen çekim vb.; `local_bonus_id` ile DB’den veya manuel bayraklarla. IP rate limit: `CronosRateLimit`. |
| `call_bonus_prechecks_local_bonus.php` | Aynı mantık; `local_bonus_id` + `player_id` zorunlu, bayraklar yalnızca DB’den. |
| `evaluate_bonus_request.php` | `local_bonus` şeması + precheck + sonuç `bonus_request` tablosuna. |
| `create_bonus_request.php` | Test/admin: `bonus_request` satırı oluşturur (POST/JSON). |
| `grant_cronos_bonus.php` | Yerel bonus → Cronos `bonus_id`; `POST /_api/customers/add-bonus`. `sync_secret` ile korunur. |
| `grant_cronos_freespin.php` | `POST /_api/customers/free-spin/create/{player_id}` — freespin motorları ve `params_json`. |
| `sync_cronos_bonuses.php` | Cronos `GET /_api/bonuses` ile katalog çekip `cronos_bonus_catalog` yazar; web’de `sync_secret` + rate limit; CLI’de secret aranmaz. |
| `list_cronos_bonus_catalog.php` | Senkron kataloğu listeler (`sync_secret`); admin/yerel bonus formu için. |
| `promo_redeem.php` | Üye promosyon kodu: `PromoRedeemService` — `cronos_bonus` veya `cronos_freespin` ödül yolları; promo rate limit. |

---

## `api/lib/` — seçilmiş destek dosyaları (doğrudan tarayıcı ucu değil)

| Dosya | Rol |
|--------|-----|
| `CallHelpers.php` | `cronos_latest_session`, `cronos_auth_headers` (Bearer, Referer, Cookie). |
| `CronosHttp.php` | HTTP/JSON istekleri, Cloudflare tespiti. |
| `Db.php` | `CronosDb::pdo()` — yapılandırmadan PDO. |
| `TokenManager.php` | Token saklama/yenileme, `forceLogin`. |
| `BonusPrechecks.php` | Ön kontrol kuralları (session-history, finans, bc-coupons vb.). |
| `EvaluateBonusRequest.php` | Bonus talebi değerlendirme iş kuralları. |
| `LocalBonusRepository.php` | Yerel bonus CRUD / okuma. |
| `CronosAddBonusClient.php` / `CronosFreeSpinCreateClient.php` | Cronos’a bonus/freespin POST. |
| `CronosBonusCatalogSync.php` | Katalog senkron mantığı. |
| `PromoRedeemService.php` | Promosyon kodu iş akışı. |
| `SyncSecretAuth.php` | `sync_secret` doğrulama (header/GET/POST/JSON). |
| `RateLimitIp.php` | IP bazlı `CronosRateLimit`. |
| `SyncSecretAuth.php`, `CronosSyncLog.php` | Senkron güvenliği ve log. |
| Diğer `Bonus*.php`, `EvaluateCronosGrant.php`, `ManualCronosGrant.php`, … | Parametre şemaları, motor kayıt defteri, üye notu guard, hata mesajları vb. |

---

## `api/data/`

| Dosya | İşlev |
|--------|--------|
| `freespin_games.json` | Freespin oyun listesi / referans verisi (Cronos `game_id` ile uyum için). |

---

## Eski / ayrı yapı (kök `config` ve `api/Token`)

Aşağıdaki dosyalar **`api/config.php` + `bootstrap.php` zincirini kullanmaz**; `../config/config.php` ve `api/Token/TokenManager.php` bekler. Yeni Cronos proxy sistemiyle aynı oturum dosyalarını paylaşmayabilir; dağıtımda yol ve TokenManager uyumunu doğrulamak gerekir.

| Dosya | İşlev |
|--------|--------|
| `Users.php` | Üye verilerini API’den toplu çekme, batch/AJAX ilerleme, `members` tablosu. |
| `TodayUsers.php` | Bugün kayıt olan üyeleri çekip DB’de yoksa ekler. |
| `UpdateContacts.php` | E-posta/GSM boş veya maskeli üyeler için iletişim güncelleme (run başına sınırlı üye). |
| `UpdateIsLocked.php` | `isLocked` ve BTag güncellemesi, batch işlem. |

---

## Kontrol notları (bağlantı bütünlüğü)

1. **`LossWindowFinance`:** `api/lib/BonusPrechecks.php`, `api/lib/PromoRedeemService.php`, `api/call_bonuses_player.php` dosyaları `api/lib/motors/LossWindowFinance.php` yolunu `require` eder. Bu workspace anlık görüntüsünde **`api/lib/motors/` klasörü yok**; bu uçlar çalıştırıldığında PHP fatal hatası verebilir. Motor dosyasının eklenmesi veya yolların düzeltilmesi gerekir.
2. **İki Token/config hattı:** Modern `call_*` uçları `api/TokenManager.php` (lib altında) kullanır; `Users.php` vb. `api/Token/TokenManager.php` ve üst `config/config.php` kullanır — entegrasyon veya cron tanımlarında karışıklık olmaması için ayrı ayrı test edilmelidir.
3. **`sync_secret`:** `grant_cronos_bonus.php`, `grant_cronos_freespin.php`, `sync_cronos_bonuses.php` (web), `list_cronos_bonus_catalog.php` yapılandırmada tanımlıysa istemciden beklenir (`SyncSecretAuth`).
4. **Cronos taban URL:** Oturum satırındaki `base_url` yoksa `config.php` içindeki `default_base_url` kullanılır (varsayılan: `https://cronos.redlanegaming.com`).

---

*Bu dosya, `api/` altındaki PHP uçlarının ve bağlantıların kod üstü yorumlarına göre derlenmiştir; güncel Cronos sürümüne göre panel uçları değişebilir.*
