# Sağlık ve Anahtar Kontrolü

https://dev.wisecp.com/tr/saglik-ve-anahtar-kontrolu

API'nin ayakta olduğunu ve anahtarınızın ne yapabildiğini söyleyen iki uç.

## Genel Bakış

Bu iki uç bir tümleştirmenin ilk iki sorusunu yanıtlar: **API ayakta mı** ve **elimdeki anahtar ne yapabiliyor**.

Sağlık kontrolü kimlik istemez; izleme aracı ya da sürüm denetimi için doğrudan çağrılabilir. Anahtar bilgisi ise kimlik ister ama **kapsam istemez**: geçerli her anahtar kendi yetkilerini okuyabilir.

İkisi birlikte bir teşhis çifti kurar. Sağlık kontrolü geçip anahtar bilgisi düşerse sorun sunucuda değil kimlik bilgisinde aranır.

## Referans

### Sağlık Kontrolü

get/api/v1/admin/ping

`System/Ping` kimlik gerekmez

API'nin ayakta olduğunu ve sunucu saatini döndürür.

Dönen alanlar data — 3

pongboolAPI ayakta mı.

versionstringAPI sürümü.

timestringSunucunun saati. Sunucunun kendi saat diliminde gelir.

Hatalar —

——Bu uç herkese açık, hata döndürmez.

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

```bash
curl 'https://panel.ornek.com/api/v1/admin/ping'
```

```javascript
const res = await fetch('https://panel.ornek.com/api/v1/admin/ping');
const { data } = await res.json();

const drift = Math.abs(Date.parse(data.time) - Date.now());
```

```php
$ch = curl_init('https://panel.ornek.com/api/v1/admin/ping');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

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

```php
// Bu uc ANAHTAR ISTEMEZ: erisilebilmesi anahtarinizin gecerli oldugu anlamina gelmez.
$up = Api::System()->Ping()['data']['pong'] ?? false;
```

### Anahtar Bilgisi

get/api/v1/admin/whoami

`System/Whoami` kapsam gerekmez

Kullandığınız anahtarın kimliğini ve yetkilerini döndürür.

Dönen alanlar data — 4

idintAnahtarın numarası.

namestringAnahtara verilen ad.

permissionsstring[]Anahtarın taşıdığı kapsamlar. Grup ve iş adı çiftleri.

last_accessstringSon kullanıldığı an.

Hatalar 4

missing_token401Yetki başlığı gönderilmemiş.

invalid_token401Anahtar geçersiz.

ip_not_allowed403İstek izin verilen adreslerin dışından geldi.

rate_limited429İstek sınırı aşıldı.

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

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

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

if (res.status === 401) return promptForKey();

const { data } = await res.json();
const canReadInvoices = data.permissions.some((s) => s.startsWith('Invoices/'));
```

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

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

```php
// Kapsami ONCEDEN okumak, her cagrida 403 yiyip ogrenmekten iyidir.
$me = Api::System()->Whoami()['data'];
$may = fn (string $s) => in_array($s, $me['permissions'], true)
    || in_array(explode('/', $s)[0] . '/*', $me['permissions'], true);
```

## Tuzaklar

> **Sağlık kontrolü anahtarınızı doğrulamaz**
> 
> Sağlık ucu kimlik doğrulaması yapmaz: anahtarınız iptal edilmiş, süresi dolmuş ya da hiç gönderilmemiş olsa bile **başarılı döner**. Bir bağlantı sınamasını yalnız buna dayandırmak, gerçek çağrılar başarısız olurken sistemi sağlıklı gösterir.

> **Sunucu saati sizin saatiniz değildir**
> 
> Dönen saat sunucunun kendi saat dilimini taşır ve sizinkiyle uyuşmayabilir. Diğer uçlardaki tarihler de aynı dilimi taşır, yani bir tarihi kendi saatinize göre karşılaştırmak **saatler tutmayan sonuçlar** üretir. Bu ucun saatini referans alın.

> **Kapsam listesi joker taşıyabilir**
> 
> Yetki listesi tek tek iş adları yerine grup jokeri ya da tümünü kapsayan bir yıldız içerebilir. Bir işin izinli olup olmadığını **düz karşılaştırmayla** aramak joker taşıyan anahtarlarda yanlış olumsuz verir. Grup jokerini de sınayın.

> **Yetki hatasını ayırmanın en hızlı yolu**
> 
> Bir çağrı `403` döndürdüğünde sebep ya eksik kapsam olur ya da yanlış anahtar. Anahtar bilgisi ucu ikisini bir çağrıda ayırır: uç çalışıyorsa anahtar geçerli sayılır ve sorun **kapsamda** kalır. Sınırlanmış adres ve aşılmış istek sınırı da burada görünür.

## İlgili Makaleler

- [Başvuru Listeleri](https://dev.wisecp.com/tr/basvuru-listeleri)
- [API Kimlik Bilgileri](https://dev.wisecp.com/tr/api-kimlik-bilgileri)
