# Cron Ayarları

https://dev.wisecp.com/tr/cron-ayarlari

Otomasyonun yapılandırmasını, genel anahtarını ve cron gizli anahtarını yöneten dört uç.

## Genel Bakış

Bu dört uç otomasyonun **kendisini** ayarlar: ne kadar süre kayıt tutulacağını, ağır işlerin hangi saatlerde çalışacağını, otomasyonun açık olup olmadığını ve cron adresini koruyan gizli anahtarı.

Genel anahtar bir **acil durdurma kolu** gibidir. Kapatıldığında hiçbir görev çalışmaz: fatura kesilmez, hizmet yenilenmez, bildirim gitmez. Kapatan kişi ve zamanı ayarlarda kayıtlı kalır.

Gizli anahtar cron adresinin **parolasıdır** ve okunamaz; ayarlar yalnız tanımlı olup olmadığını söyler. Yenilemek onu bir kez döndürür ve eski adresi geçersiz kılar.

## Referans

### Ayarları Getirme

get/api/v1/admin/automation/settings

`Automation/GetAutomationSettings` admin

Otomasyonun yapılandırmasını ve genel anahtarının durumunu döndürür.

Dönen alanlar data — 8

cron_enabledboolOtomasyonun genel anahtarı açık mı.

disabled_atstring | nullKapatıldığı an.

disabled_bystring | nullKapatan kişi.

time_windowobjectAğır işlerin çalıştığı zaman aralığı: başlangıcı ve bitişi.

retentionobjectKayıtların ne kadar saklandığı: tamamlanan, iptal edilen ve düşen işler için ayrı gün sayıları.

secret_setboolCron gizli anahtarının tanımlı olup olmadığı. Anahtarın kendisi hiçbir zaman dönmez.

restoreobjectGeri yükleme şüphesi: ne zaman doğduğu ve kaç saatlik boşluğa dayandığı.

tasksobjectGörev tanımlarının ham hâli.

Hatalar 1

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl 'https://panel.ornek.com/api/v1/admin/automation/settings' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res  = await fetch('https://panel.ornek.com/api/v1/admin/automation/settings', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Gizli anahtar DONMEZ: yalniz tanimli olup olmadigini soyleyen bir isaret gelir.
$s = Api::Automation()->GetAutomationSettings()['data'];
$ready = $s['cron_enabled'] && $s['secret_set'];
```

### Ayarları Yazma

put/api/v1/admin/automation/settings

`Automation/UpdateAutomationSettings` admin

Kayıtların saklanma süresini ve çalışma aralığını yazar.

Gövde 4

completed_daysintTamamlanan işlerin kaç gün saklanacağı. En az bir gün.

cancelled_daysintİptal edilen işlerin kaç gün saklanacağı.

failed_daysintDüşen işlerin kaç gün saklanacağı.

time_windowobjectAğır işlerin çalışacağı aralık: başlangıç ve bitiş saati. Gün başından sonra en az bir saat sürmeli.

Dönen alanlar data — 8

dataobjectGüncel ayarlar. Getirme ucuyla aynı şekildedir.

Hatalar 3

invalid_window422Çalışma aralığı çok kısa.

config_write_failed422Ayar dosyası yazılamadı.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/automation/settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"completed_days":30,"failed_days":30,"time_window":{"start":"00:00","end":"06:00"}}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    completed_days: 30,
    cancelled_days: 7,
    failed_days: 30,
    time_window: { start: '00:00', end: '06:00' },
  }),
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'completed_days' => 30,
        'failed_days'    => 30,
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Saklama suresini KISALTMAK gecmisi hemen silmez; temizlik ayri bir cagridir.
Api::Automation()->UpdateAutomationSettings(['completed_days' => 7]);
```

### Otomasyonu Durdurma

put/api/v1/admin/automation/cron-enabled

`Automation/ToggleAutomationCron` admin her şeyi durdurur

Otomasyonun genel anahtarını açar ya da kapatır.

Gövde 1

enabledintreqOtomasyonu açar ya da tümüyle durdurur.

Dönen alanlar data — 2

cron_enabledboolAnahtarın yeni durumu.

changedboolBir şey değişti mi. Yanlışsa anahtar zaten o durumdaydı.

Hatalar 3

enabled_required422Açık ya da kapalı bilgisi verilmedi.

blocked_by_gate422Bir kanca kapatmayı reddetti.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl -X PUT 'https://panel.ornek.com/api/v1/admin/automation/cron-enabled' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":0}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/cron-enabled', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ enabled: 0 }),
});

const body = await res.json();
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/cron-enabled');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['enabled' => 0]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Kapatmak FATURA, YENILEME ve bildirimlerin tamamini durdurur; bakim disinda kullanmayin.
Api::Automation()->ToggleAutomationCron(['enabled' => 0]);
// ... bakim ...
Api::Automation()->ToggleAutomationCron(['enabled' => 1]);
```

### Gizli Anahtarı Yenileme

post/api/v1/admin/automation/cron-secret/regenerate

`Automation/RegenerateAutomationCronSecret` admin eski adresi bozar

Cron adresindeki gizli anahtarı yeniden üretir ve döndürür.

Gövde —

——Gövde gerekmez, boş gönderin. Bu uç hiçbir alan almaz; yeni anahtarı siz seçemezsiniz.

Dönen alanlar data — 1

secretstringYeni gizli anahtar. Bir daha okunamaz; sunucudaki zamanlanmış çağrıya hemen yazın.

Hatalar 2

config_write_failed422Ayar dosyası yazılamadı.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

İstek cURL JavaScript PHP (HTTP) PHP (Dahili)

```bash
curl -X POST 'https://panel.ornek.com/api/v1/admin/automation/cron-secret/regenerate' \
  -H "Authorization: Bearer $API_KEY"
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/automation/cron-secret/regenerate', {
  method: 'POST',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const { data } = await res.json();
// data.secret yalnizca burada gorunur
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/automation/cron-secret/regenerate');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
```

```php
// Yenilemek ESKI cron adresini gecersiz kilar: sunucudaki zamanlanmis cagri guncellenene
// kadar otomasyon calismaz.
$secret = Api::Automation()->RegenerateAutomationCronSecret()['data']['secret'];
```

## Tuzaklar

> **Genel anahtar her şeyi durdurur**
> 
> Otomasyonu kapatmak tek bir görevi değil **hepsini** durdurur: fatura kesilmez, hizmet yenilenmez, askıya alma çalışmaz, bildirim gitmez. Kapalı kaldığı süre boyunca işler kuyrukta birikir ve açıldığında hepsi birden koşmaya başlar. Bakım için kapatıyorsanız süresini kısa tutun.

> **Yeni gizli anahtar bir kez görünür**
> 
> Yenileme çağrısı anahtarı **yalnız o yanıtta** döndürür; ayarlar ucu onu bir daha vermez. Kaydetmeden geçerseniz sunucudaki zamanlanmış çağrıyı güncelleyemezsiniz ve tek çare yeniden yenilemektir. Yanıtı günlüğe yazan bir istemci de anahtarı günlüğe yazar.

> **Yenilemek eski adresi bozar**
> 
> Gizli anahtar cron adresinin parçasıdır. Yenilendiği an sunucudaki zamanlanmış çağrı **eski adresi kullanmaya devam eder** ve reddedilir; otomasyon adres güncellenene kadar durur. Bu sessiz bir kesintidir: ekranda hata çıkmaz, yalnız işler birikmeye başlar.

> **Çalışma aralığı ağır işleri geciktirir**
> 
> Aralık, ağır görevlerin **yalnız belirli saatlerde** çalışmasını sağlar. Dar bir aralık gece işlerinin sabaha yetişmemesine ve kuyruğun her gün biraz daha büyümesine yol açabilir. Aralığı daraltırken panodaki en uzun bekleme süresine bakın; büyüyorsa aralık yetmiyordur.

> **Saklama süresini kısaltmak geçmişi silmez**
> 
> Saklama günlerini düşürmek yalnız **bundan sonraki temizliğin ölçüsünü** değiştirir; eski satırlar temizlik çalışana kadar yerinde durur. Yer açmak için ayarı değiştirip beklemek yerine temizliği ayrıca çalıştırın; önce ön izlemeyle ne gideceğine bakabilirsiniz.

## İlgili Makaleler

- [Kuyruk Bakımı](https://dev.wisecp.com/tr/kuyruk-bakimi)
- [Otomasyon İşleri](https://dev.wisecp.com/tr/otomasyon-isleri)
- [Zamanlanmış Görevler](https://dev.wisecp.com/tr/zamanlanmis-gorevler)
