# Süreç İçi API Çağrısı

https://dev.wisecp.com/tr/surec-ici-api-cagrisi

Zaten kurulumun içinde çalışan kod, HTTP'siz, anahtarsız ve ağ turu olmadan her ucu çağırabilir.

## Genel Bakış

Bu dokümandaki her uç örneği dördüncü bir sekme taşır: **PHP (Dahili)**. O sekme aynı HTTP isteğinin kısayolu değil. Aynı kaynağa açılan ikinci bir giriş noktası ve kurulumun içinde yaşayan kod için: bir modül, bir cron işleyicisi, bir kanca dinleyicisi, bir tema.

Kullanma sebebi yalnızca hız değil. Kendi kurulumunuzu HTTP üzerinden çağırmak, kendinize anahtar vermek, o anahtarın istek bütçesini harcamak ve web sunucusunun kendisine erişebilir olmasına bağlı kalmak demektir. Süreç içi çağrıda bunların hiçbiri yok ve tam olarak aynı zarfı döndürür; yanıtı okuduğunuz noktada ikisi birbirinin yerine geçer.

Burası tanımı gereği güvenilen bir bağlam. Kimlik doğrulama, izinler, istek sınırlayıcı, kötüye kullanım koruması, tekrar güvenliği ve istek kaydı HTTP katmanına aittir ve hiçbiri burada çalışmaz. Ne verirseniz çalıştırılır.

## Referans

### İmza

- **Kernel::internal($groupAction, $input = [], $query = []): array**: Static. HTTP çağrısının döndüreceği içeriğin aynısını verir: başarıda `['data' => …, 'meta' => …]`, başarısızlıkta `['error' => ['code', 'message', 'details'?]]`. API düzeyindeki bir hatada istisna fırlatmaz ve hiçbir şey yazdırmaz.
- **$groupAction**: Ucun kendi adı, `Grup/Eylem` — dokümanın ve izin kutusunun kullandığı metnin aynısı. Müşteri adresine ulaşmak için başına `client:` ekleyin.
- **$input**: Hem yol değerlerini hem gövdeyi taşıyan tek düz dizi. Adı rota deseninde bir yer tutucuya karşılık gelen anahtarlar, desen sırasıyla yol değeri olarak ayrılır; geriye kalan her şey istek gövdesi olur.
- **$query**: Sorgu dizesi, dizi olarak. Süzgeçler, sıralama, `page` ve `limit` buraya girer, `$input`'a değil.

### $input Nasıl Ayrılır

`services/{id}/addons` gibi bir rotada tek yer tutucu var. `['id' => 5, 'name' => 'Yedek']` vermek `5` değerini yol değeri olarak gönderir ve geriye `['name' => 'Yedek']` gövdesini bırakır. Adresi siz kurmazsınız; rota değişince çağrınız bu yüzden kırılmaz.

### Müşteri Adresi

Müşteri adresine yapılan HTTP çağrısı hesabı anahtardan alır. Burada anahtar yok, dolayısıyla hesabın adı verilmelidir: `$input` içine `owner_id` koyun ve eylemin başına `client:` ekleyin. Bu değer gönderimden önce girdiden çıkarılır, yani kaynağa gövde alanı olarak hiç ulaşmaz.

Vermemek tahmin edilmez, reddedilir. Çağrı `owner_required` döner ve hiçbir şey çalışmaz.

### Başarısızlıkta Ne Döner

- **endpoint_not_found**: O adreste bu `Grup/Eylem` adına cevap veren uç yok. Yazım hatası buraya düşer; `client:` önekiyle çağrılan bir yönetim eylemi de öyle.
- **owner_required**: `owner_id` verilmemiş bir müşteri çağrısı.
- **validation_failed · not_found · …**: Kaynağın kendi reddettiği ne varsa, HTTP'dekiyle aynı biçimde ve aynı kodla.
- **server_error**: Beklenmedik bir hata. Ayrıntı hata kaydına gider, dönen mesaja değil; kurulum hata ayıklama kipinde değilse.

## Örnek

```php
use WISECP\Api\Kernel;

// yonetim adresi: sorgu secenekleriyle bir liste
$res = Kernel::internal('Clients/GetClients', [], ['page' => 1, 'limit' => 50, 'status' => 'active']);

if (isset($res['error'])) {
    \Logger::warning('musteri senkronu basarisiz: ' . $res['error']['code']);
    return;
}

foreach ($res['data'] as $client) { /* ... */ }
$more = (int) ($res['meta']['next_page'] ?? 0);

// yol degeri ve govde tek dizide
$upd = Kernel::internal('Clients/UpdateClient', ['id' => 42, 'company_name' => 'Acme Ltd']);

// musteri adresi: hesap tahmin edilmez, adiyla verilir
$me = Kernel::internal('client:Account/GetMe', ['owner_id' => 42]);
```

## Tuzaklar

> **Burada izin denetlenmez, kendi denetiminizi yapın**
> 
> HTTP çağıranı, kaynağa ulaşmadan önce anahtarının izinlerine göre süzülür. Süreç içi çağrı hiç süzülmez, çünkü çağıran kurulumun kendisidir. Kodunuz bir kişi adına çalışıyorsa, o kişinin neye yetkili olduğuna çağrıdan önce karar verin ve eylemi ya da hedef hesabı asla bir istek değerine seçtirmeyin.

> **Modül uçlarına bu yoldan ulaşılamaz**
> 
> Ad ilk eğik çizgide bölünür ve modül grubu zaten bir tane taşır: `Module:Addons/AcmeSync`. Bölme yanlış çifti üretir ve çağrı `endpoint_not_found` döner. Kurulumun içindeki kod, modülün kendi sınıfını ya da operasyonunu doğrudan çağırmalıdır; uç, dışarıdaki çağıranlar için vardır.

> **İstek kaydına hiçbir şey yazılmaz**
> 
> API kaydı HTTP trafiğini tutar. Süreç içi çağrı oraya satır bırakmaz; ikisini karıştıran bir entegrasyon operatöre etkinliğinin yalnızca yarısını gösterir. Bir arka plan işinin denetim izine ihtiyacı varsa, kendi izinizi siz yazın.

> **Demo kipi bunu durdurmaz**
> 
> Demo koruması yazmaları HTTP katmanında reddeder. Bu yol onun altındadır; demo kipindeki bir kurulumda cron işleyicisi ya da kanca dinleyicisi yazmaya devam eder. Bu bilinçlidir, çünkü kurulumun kendi düzeneği çalışmayı sürdürmek zorundadır. Bir demo, olmaması gereken veriyi gösterdiğinde hatırlamaya değer.

## İlgili Makaleler

- [API Kaynakları](https://dev.wisecp.com/tr/api-kaynaklari)
- [İstek ve Yanıt Biçimi](https://dev.wisecp.com/tr/istek-ve-yanit-bicimi)
- [Olaylara Tepki Verme](https://dev.wisecp.com/tr/olaylara-tepki-verme)
- [Müşteri API'sine Giriş](https://dev.wisecp.com/tr/musteri-api-giris)
