# Hızlı Okumalar

https://dev.wisecp.com/tr/hizli-okumalar

Müşteri arayan, sayıları veren ve özet kartını dolduran, hiçbir şeyi değiştirmeyen dört uç.

## Genel Bakış

Bu dört uç bir müşteri hakkında hızlı bilgi verir ve hiçbir şeyi değiştirmez. Panelde arama kutusu, pano sayıları ve özet kartı bunları kullanır.

İkisi kurulum geneline bakar (arama ve istatistikler), ikisi tek bir müşteriye (özet ve öne çıkan not). Adres içinde müşteri kimliği olup olmaması hangisinde olduğunuzu söyler.

## Referans

### Müşteri Arama

get/api/v1/admin/clients/search

`Clients/SearchClients` admin otomatik tamamlama

Ada, firmaya ya da e-postaya göre müşteri arar. Otomatik tamamlama kutuları için yazılmıştır.

Sorgu parametreleri 1

qstringArama terimi. `search` adı da kabul edilir.

Dönen alanlar data[] — 4

idintMüşteri kimliği.

full_namestringAd ve soyad.

company_namestringFirma adı.

textstringHazır görüntü etiketi: ad ve firma birleştirilmiş.

Hatalar 1

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -G 'https://panel.ornek.com/api/v1/admin/clients/search' \
  -H "Authorization: Bearer $API_KEY" \
  -d q=acme
```

```javascript
const url = new URL('https://panel.ornek.com/api/v1/admin/clients/search');
url.searchParams.set('q', 'acme');

const res  = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
```

```php
$url = 'https://panel.ornek.com/api/v1/admin/clients/search?' . http_build_query(['q' => 'acme']);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
$response = Api::Clients()->SearchClients([], ['q' => 'acme']);
```

### Müşteri İstatistikleri

get/api/v1/admin/clients/stats

`Clients/GetClientsStats` admin tüm müşteriler

Kurulumdaki tüm müşteriler için sayıları döndürür. Tek bir müşteriye bakmaz.

Sorgu parametreleri 1

periodstringDönem: `all_time`, `today`, `week`, `month` ya da `year`. Varsayılan `all_time`.

Dönen alanlar data — 9

activeintAktif müşteri sayısı.

blockedintEngelli müşteri sayısı.

newintDönemde eklenen müşteri sayısı.

blacklistedintKara listedeki müşteri sayısı.

active_servicesintAktif hizmet sayısı.

unpaid_invoicesintÖdenmemiş fatura sayısı.

credit_balancefloatToplam kredi bakiyesi. Ham sayı; para birimi sembolünü siz eklersiniz.

growth_ratefloatBüyüme oranı, yüzde olarak.

totalintDönemdeki toplam müşteri sayısı.

Hatalar 1

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl -G 'https://panel.ornek.com/api/v1/admin/clients/stats' \
  -H "Authorization: Bearer $API_KEY" \
  -d period=month
```

```javascript
const url = new URL('https://panel.ornek.com/api/v1/admin/clients/stats');
url.searchParams.set('period', 'month');

const res  = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` } });
const body = await res.json();
```

```php
$url = 'https://panel.ornek.com/api/v1/admin/clients/stats?' . http_build_query(['period' => 'month']);

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

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

```php
$response = Api::Clients()->GetClientsStats([], ['period' => 'month']);
```

Yanıt 200

```json
{
  "data": {
    "active": 120,
    "blocked": 3,
    "new": 18,
    "blacklisted": 2,
    "active_services": 340,
    "unpaid_invoices": 41,
    "credit_balance": 14620.12,
    "growth_rate": 4.5,
    "total": 145
  }
}
```

### Müşteri Özeti

get/api/v1/admin/clients/{id}/summary

`Clients/GetClientSummary` admin rozet ve güven puanı

Tek bir müşteri için özet kart verisi döndürür: gelir, hizmet ve talep sayıları, rozetler, güven puanı.

Dönen alanlar data — 13

user_idintMüşteri kimliği.

full_namestringAd ve soyad.

company_namestringFirma adı.

created_atstringÜyelik tarihi. Ham değer; biçimlendirme sizde.

total_revenuefloatBugüne kadar ödediği toplam tutar.

revenue_currencyintTutarın para birimi kimliği. Liste: `reference/currencies`.

paid_invoicesintÖdenmiş fatura sayısı.

active_servicesintAktif hizmet sayısı.

inactive_servicesintPasif hizmet sayısı.

total_ticketsintToplam destek talebi sayısı.

recent_ticketsintSon dönemdeki destek talebi sayısı.

badgesobject 4 alanHangi rozetlerin kazanıldığı.

loyalboolÜyelik yaşı eşiği aşıldı.

revenueboolGelir eşiği aşıldı.

multi_serviceboolBirden çok aktif hizmeti var.

experiencedboolGeçmiş etkileşim eşiği aşıldı.

trust_scoreobject 6 alanGüven puanı ve bileşenleri.

totalintToplam puan. 0 ile 100 arasında.

labelstring`poor`, `fair`, `good` ya da `excellent`.

servicesintHizmet ekseninden gelen puan.

revenueintGelir ekseninden gelen puan.

ageintHesap yaşı ekseninden gelen puan.

ticketsintDestek talebi ekseninden gelen puan.

Hatalar 2

not_found404Müşteri bulunamadı.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

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

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

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

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

```php
$response = Api::Clients()->GetClientSummary(['id' => 42]);

// Puanin nereden geldigini bilesenlerden okuyabilirsiniz.
$score = $response['data']['trust_score'];
$fromServices = $score['services'];
```

Yanıt 200

```json
{
  "data": {
    "user_id": 9,
    "full_name": "Test Client",
    "company_name": "",
    "created_at": "2021-03-18 00:00:00",
    "total_revenue": 36,
    "revenue_currency": 4,
    "paid_invoices": 1,
    "active_services": 16,
    "inactive_services": 16,
    "total_tickets": 0,
    "recent_tickets": 0,
    "badges": {
      "loyal": true,
      "revenue": false,
      "multi_service": true,
      "experienced": true
    },
    "trust_score": {
      "total": 50,
      "label": "fair",
      "services": 30,
      "revenue": 5,
      "age": 15,
      "tickets": 0
    }
  }
}
```

### Öne Çıkan Notu Getirme

get/api/v1/admin/clients/{id}/latest-note

`Clients/GetClientLatestNote` admin sabitlenmiş önce

Müşterinin tek bir notunu döndürür: varsa sabitlenmiş olanı, yoksa en yenisini.

Dönen alanlar data — 9

idintNot kimliği.

contentstringNotun içeriği.

pinnedboolNot sabitlenmiş mi.

added_byintNotu ekleyen yöneticinin kimliği.

added_by_namestringNotu ekleyen yöneticinin adı; 3.x'ten düz metin olarak gelen notta boştur (added_by 0).

created_atstringNotun eklendiği zaman.

pinned_byint|nullNotu sabitleyen yöneticinin id'si. Not sabit değilse ya da bu alandan önce sabitlendiyse `null`.

pinned_by_namestring|nullNotu sabitleyenin adı — sabit not bandı yazarı değil bunu gösterir.

pinned_atstring|nullSabitlendiği zaman. Sabit kalan not düzenlenince damga korunur; sabitleme kaldırılınca üçü de silinir.

Hatalar 2

not_found404Müşteri bulunamadı.

insufficient_scope403Anahtar gerekli kapsamı taşımıyor.

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

```bash
curl 'https://panel.ornek.com/api/v1/admin/clients/42/latest-note' \
  -H "Authorization: Bearer $API_KEY"
```

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

// Hic not yoksa data null gelir — 404 degil.
if (body.data === null) return;
```

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

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

```php
$response = Api::Clients()->GetClientLatestNote(['id' => 42]);

// Notu olmayan musteride 'data' null olur.
$note = $response['data'] ?? null;
```

## Tuzaklar

> **Tutarlar ham gelir, biçimlendirilmez**
> 
> Kredi bakiyesi ve gelir alanları sembolsüz sayılardır; tarih de ham biçimdedir. Para birimini ayrı alandan okuyup biçimlendirmeyi kendiniz yaparsınız. Bu bilinçlidir: sunucu okuyucunun yerelini bilmez.

> **Notu olmayan müşteride null gelir**
> 
> Öne çıkan not ucu, notu olmayan bir müşteride `404` değil `data: null` döndürür. Alanlara doğrudan erişen kod burada patlar; önce boş olup olmadığına bakın.

> **Güven puanı ayarlara bağlıdır**
> 
> Özetteki puan sabit bir ölçek değildir; yapılandırmadaki kademelerden hesaplanır. Kademeleri değiştirdiğinizde aynı müşterinin puanı değişir, dolayısıyla puanı kurulumlar arasında karşılaştırmayın.

## İlgili Makaleler

- [Müşteri Uçları](https://dev.wisecp.com/tr/musteri-uclari)
- [Müşteri Yapılandırması](https://dev.wisecp.com/tr/musteri-yapilandirmasi)
- [Müşteri Dahili Notları](https://dev.wisecp.com/tr/musteri-dahili-notlari)
