# Talep Ayarları

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

Destek alanının genel ayarlarını, e-posta yapılandırmasını ve özel durumları yöneten altı uç.

## Genel Bakış

Bu altı uç destek alanının **nasıl çalışacağını** belirler. İkisi genel ayarları tutar, ikisi e-postadan talep almayı yapılandırır, ikisi de kuruluma özel durumları yönetir.

Genel ayarların içinde iki **engelleme anahtarı** vardır: hizmeti olmayanlar ve doğrulanmamış hesaplar. İkisi de müşterinin talep açmasını keser; destek kutusu beklenmedik biçimde sessizse ilk bakılacak yer burasıdır.

Özel durumlar standart durumların **üzerine oturur**. "Parça bekleniyor" gibi bir durum kendi rengiyle ve adıyla görünür, ama iş akışı bakımından hangi standart durumdan türetildiyse öyle davranır.

## Referans

### Destek Ayarlarını Getirme

get/api/v1/admin/tickets/settings

`Tickets/GetTicketSettings` admin

Destek alanının genel ayarlarını döndürür.

Dönen alanlar data — 10

show_firstintKonuşmanın hangi uçtan başlayacağı.

member_groupintDestek açmasına izin verilen müşteri grubu.

ticket_claimingboolPersonelin talebi kendi üzerine alabilmesi.

assigned_tickets_onlyboolPersonelin yalnız kendine atanmışları görmesi.

block_without_serviceboolHizmeti olmayan müşterinin talep açamaması.

verification_requiredboolTalep açmak için hesabın doğrulanmış olması.

technical_departmentintTeknik konuların gittiği departman.

billing_departmentintMuhasebe konularının gittiği departman.

listing_countintPanelde sayfa başına gösterilecek talep.

refresh_timeintPanelin listeyi kaç saniyede bir tazeleyeceği.

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/tickets/settings' \
  -H "Authorization: Bearer $API_KEY"
```

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

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

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

```php
// Iki engelleme ayari MUSTERININ talep acmasini keser; destek gelmiyorsa once bunlara bakin.
$s = Api::Tickets()->GetTicketSettings()['data'];
```

### Destek Ayarlarını Yazma

put/api/v1/admin/tickets/settings

`Tickets/UpdateTicketSettings` admin

Genel destek ayarlarını değiştirir.

Gövde 10

show_firstintKonuşmanın hangi uçtan başlayacağı.

member_groupintDestek açmasına izin verilen müşteri grubu.

ticket_claimingboolPersonelin talebi kendi üzerine alabilmesi.

assigned_tickets_onlyboolPersonelin yalnız kendine atanmışları görmesi.

block_without_serviceboolHizmeti olmayan müşterinin talep açamaması.

verification_requiredboolTalep açmak için hesabın doğrulanmış olması.

technical_departmentintTeknik konuların gittiği departman.

billing_departmentintMuhasebe konularının gittiği departman.

listing_countintSayfa başına talep. Bir ile yüz arasına çekilir.

refresh_timeintTazeleme aralığı. Beş ile üç yüz saniye arasına çekilir.

Dönen alanlar data — 10

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

Hatalar 1

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/tickets/settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"listing_count":25,"refresh_time":60,"ticket_claiming":true}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    listing_count: 25,
    refresh_time: 60,
    ticket_claiming: true,
  }),
});

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

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

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

```php
// Aralik disi bir deger REDDEDILMEZ, sinira cekilir; donen degeri okuyup dogrulayin.
$now = Api::Tickets()->UpdateTicketSettings(['refresh_time' => 1])['data'];
// $now['refresh_time'] === 5
```

### Posta Ayarlarını Getirme

get/api/v1/admin/tickets/pipe-settings

`Tickets/GetTicketPipeSettings` admin

E-postadan talep almanın yapılandırmasını döndürür.

Dönen alanlar data — 5

enabledboolE-postadan talep almanın açık olup olmadığı.

methodintGelen postanın hangi müşteriye bağlanacağını belirleyen yöntem.

spam_controlboolGelen postanın spam denetiminden geçmesi.

prefixstringKonu satırındaki referans öneki. Yanıtların doğru talebe dönmesini bu sağlar.

departmentsobjectDepartman başına posta kutusu ayarı: gönderen adresi, görünen ad ve sağlayıcı.

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/tickets/pipe-settings' \
  -H "Authorization: Bearer $API_KEY"
```

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

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

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

```php
// Burasi YALNIZCA yapilandirmadir; posta kutusu yetkilendirmesi bu uctan gecmez.
$pipe = Api::Tickets()->GetTicketPipeSettings()['data'];
```

### Posta Ayarlarını Yazma

put/api/v1/admin/tickets/pipe-settings

`Tickets/UpdateTicketPipeSettings` admin

E-postadan talep almanın yapılandırmasını değiştirir.

Gövde 5

enabledboolE-postadan talep almayı açar.

methodintMüşteri eşleştirme yöntemi. Tanınmayan bir değer sıfıra düşer.

spam_controlboolSpam denetimini açar.

prefixstringReferans öneki. Boş bırakılırsa öntanımlı önek kullanılır.

departmentsobjectDepartman başına posta kutusu: gönderen adresi, görünen ad ve sağlayıcı.

Dönen alanlar data — 5

dataobjectGüncel posta ayarları.

Hatalar 1

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/tickets/pipe-settings' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":true,"method":1,"spam_control":true,"prefix":"REF"}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/pipe-settings', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    enabled: true,
    method: 1,
    spam_control: true,
    prefix: 'REF',
  }),
});

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

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/pipe-settings');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'enabled'      => true,
        'method'       => 1,
        'spam_control' => true,
        'prefix'       => 'REF',
    ]),
]);

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

```php
// Onek DEGISTIRMEK eski konularla gelen yanitlari talebine baglayamaz hale getirir.
Api::Tickets()->UpdateTicketPipeSettings(['prefix' => 'REF']);
```

### Özel Durumları Listeleme

get/api/v1/admin/tickets/custom-statuses

`Tickets/GetTicketCustomStatuses` admin

Kurulumun kendi tanımladığı talep durumlarını döndürür.

Dönen alanlar data[] — 5

idintDurumun numarası.

typestringTüretildiği standart durum: `open`, `waiting`, `process`, `replied`, `solved`.

colorstringRozetin rengi.

namestringGeçerli dildeki adı.

langsobjectDil başına adı.

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/tickets/custom-statuses' \
  -H "Authorization: Bearer $API_KEY"
```

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

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

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

```php
// Ozel durum standart durumun UZERINE oturur: is akisi tabanina gore isler.
$custom = Api::Tickets()->GetTicketCustomStatuses()['data'];
```

### Özel Durumları Yazma

put/api/v1/admin/tickets/custom-statuses

`Tickets/UpdateTicketCustomStatuses` admin listenin tamamını ister

Özel durumların tamamını gönderdiğiniz listeyle değiştirir.

Gövde 4

statusesarrayreqDurumların tamamı. Eskiler silinip bunlar yazılır.

statuses[].typestringTüretileceği standart durum: `open`, `waiting`, `process`, `replied`, `solved`. Tanınmayan bir değer işlemde durumuna düşer.

statuses[].colorstringRozetin rengi.

statuses[].langsobjectDil başına adı. Boş bırakılan diller atlanır.

Dönen alanlar data[] — 5

dataobject[]Güncel özel durumlar. Listeleme ucuyla aynı şekildedir.

Hatalar 2

invalid_statuses422Gönderilen değer bir liste değil.

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/tickets/custom-statuses' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"statuses":[{"type":"process","color":"#3399ff","langs":{"tr":"Parca bekleniyor"}}]}'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/tickets/custom-statuses', {
  method: 'PUT',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    statuses: [
      {
        type: 'process',
        color: '#3399ff',
        langs: { en: 'Awaiting parts', tr: 'Parca bekleniyor' },
      },
    ],
  }),
});

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

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/tickets/custom-statuses');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'statuses' => [[
            'type'  => 'process',
            'color' => '#3399ff',
            'langs' => ['en' => 'Awaiting parts'],
        ]],
    ]),
]);

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

```php
// Tek durum eklemek icin bile MEVCUT listeyi okuyup sonuna ekleyin; yazma tam degisimdir.
$all   = Api::Tickets()->GetTicketCustomStatuses()['data'];
$all[] = ['type' => 'waiting', 'color' => '#999999', 'langs' => ['en' => 'On hold']];

Api::Tickets()->UpdateTicketCustomStatuses(['statuses' => $all]);
```

## Tuzaklar

> **Özel durum yazımı tam değişimdir**
> 
> Yazma ucu gönderdiğiniz listeyle **eskisinin tamamını değiştirir**: mevcut durumlar silinir, gönderdikleriniz yeniden eklenir. Tek bir durum eklemek için sadece onu göndermek diğerlerini siler. Önce mevcut listeyi okuyun, sonuna ekleyin ve tümünü geri gönderin.

> **Yeniden yazmak durum numaralarını değiştirir**
> 
> Tam değişim eski kayıtları silip yenilerini eklediği için özel durumlar **yeni numaralar alır**. Bir talebe atanmış özel durum numarasını kendi tarafınızda saklıyorsanız o numara artık başka bir durumu gösterebilir. Numaraları saklamak yerine her seferinde listeden çözün.

> **İki anahtar müşteriyi sessizce durdurur**
> 
> Hizmetsiz müşteri ve doğrulama anahtarları açıkken müşteri talep **hiç açamaz**. Panelde bir hata görünmez, destek kutusu boş kalır ve bunu bir arıza sanmak kolaydır. Bir kurulumda talep gelmiyorsa önce bu iki alanı okuyun.

> **Öneki değiştirmek eski yanıtları kopartır**
> 
> Gelen bir e-postanın hangi talebe ait olduğu, konu satırındaki **referans önekinden** anlaşılır. Öneki değiştirdiğinizde eski konu satırıyla gelen yanıtlar talebini bulamaz ve yeni bir talep olarak düşer. Zaten yazışılan talepler varken öneke dokunmayın.

> **Aralık dışı değer reddedilmez, kırpılır**
> 
> Sayfa başına kayıt ve tazeleme süresi belirli aralıklara **çekilir**. Bir saniyelik tazeleme istemek hata vermez; ayar sessizce en düşük değere oturur. Gönderdiğiniz değerin yazıldığını varsaymayın, dönen yanıttaki değeri okuyun.

## İlgili Makaleler

- [Talep Otomatik Görevleri](https://dev.wisecp.com/tr/talep-otomatik-gorevleri)
- [Talep Referans Listeleri](https://dev.wisecp.com/tr/talep-referans-listeleri)
- [Talep Yönetimi](https://dev.wisecp.com/tr/talep-yonetimi)
