yaknet / api-client-services
Official PHP API Client & Cloud Services SDK for YakNet Developer Console (Cloud DNS, Storage, Datastore, Secret Manager, Pub/Sub, Cloud KV, SmartLinks, Scheduler, Monitoring, Logging, Webhooks).
Requires
- php: ^8.2
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpstan/phpstan: ^2.2
- phpunit/phpunit: ^10.5 || ^11.0 || ^12.0
Suggests
- yaknet/y-auth: OAuth 2.0 / SSO kullanıcı kimlik doğrulaması ve giriş butonu entegrasyonu için
- yaknet/yacaptcha: Altcha tabanlı PoW bot koruması ve Cloud Armor WAF bileşenleri için
Provides
None
Conflicts
None
Replaces
None
README
YakNet Developer Console (https://developer-console.yakhub.com.tr) üzerindeki tüm bulut servisleri için Discovery JSON şemalarından otomatik derlenen resmi, modüler ve yüksek performanslı PHP SDK kütüphanesi.
Not: OAuth 2.0 / SSO kullanıcı girişi için
yaknet/y-auth, Altcha PoW bot koruması ve WAF bileşenleri içinyaknet/yacaptchapaketleri bağımsız olarak kullanılmaya devam eder. Bu paket tüm YakNet Bulut / Konsol REST API servislerini tek çatı altında sunar.
Desteklenen Bulut Servisleri (21 Servis, 215+ Üretilmiş Sınıf)
| Servis Sınıfı | Açıklama | Kaynaklar (Resources) |
|---|---|---|
YakNet\Api\Storage |
Cloud Storage kova (bucket) ve nesne depolama | $storage->buckets, $storage->objects |
YakNet\Api\Datastore |
Koleksiyon ve JSON belge tabanlı NoSQL veritabanı | $datastore->collections, $datastore->documents |
YakNet\Api\SecretManager |
AES-256 şifreli gizli anahtar kasası ve sürüm yönetimi | $secrets->secrets, $secrets->versions |
YakNet\Api\PubSub |
Asenkron konu (topic) yayıncılığı, Pull/Push kuyrukları ve ACK | $pubsub->topics, $pubsub->subscriptions |
YakNet\Api\CloudKv |
Düşük gecikmeli anahtar-değer deposu ve Remote Config | $kv->entries |
YakNet\Api\SmartLinks |
Akıllı kısa bağlantılar, dinamik QR kod ve tıklama analitiği | $links->links, $links->qrcodes, $links->analytics |
YakNet\Api\Monitoring |
HTTP/HTTPS Uptime izleyicileri, canlı yoklama ve SLA metrikleri | $monitoring->uptimeChecks |
YakNet\Api\CloudScheduler |
Yönetilen Cron HTTP görevleri ve anlık tetikleme | $scheduler->jobs |
YakNet\Api\Logging |
Merkezi denetim ve özel uygulama günlükleri okuma/yazma | $logging->entries |
YakNet\Api\CloudWebhooks |
Eventarc Webhook yönetimi, özel olay tetikleme ve imza doğrulama | $webhooks->endpoints, $webhooks->events, $webhooks->deliveries |
YakNet\Api\ResourceManager |
Proje meta verileri, kaynak kotaları ve servis etkinleştirme | $rm->projects, $rm->services |
YakNet\Api\CloudDns |
Yönetilen DNS bölgeleri, A/AAAA/CNAME/MX kayıt setleri, BIND ve yayılma testi | $dns->zones, $dns->records, $dns->propagation |
YakNet\Api\CloudKms |
Proje izoleli XChaCha20-Poly1305 AEAD şifreleme, HMAC imzalama ve CSPRNG | $kms->cryptoKeys, $kms->random |
YakNet\Api\Dlp |
Hassas veri keşfi (TCKN, TR IBAN, Kredi Kartı) ve KVKK maskeleme | $dlp->content |
YakNet\Api\CloudSecurity |
Harici WAF yük denetimi, SSRF/WebRisk URL kontrolü ve parola entropi testi | $sec->threats, $sec->passwords |
YakNet\Api\Totp |
RFC 6238 iki aşamalı doğrulama (2FA) kaydı, SVG QR ve TOTP kod doğrulama | $totp->authenticator |
YakNet\Api\DomainIntel |
Geçici e-posta ve MX doğrulaması, DNS sorgulama ve X.509 SSL denetimi | $intel->email, $intel->dns, $intel->ssl |
YakNet\Api\CloudMedia |
Vektörel SVG QR kodları, deterministik Identicon/Initials avatar ve rozetler | $media->qr, $media->avatars, $media->badges |
YakNet\Api\DeviceIntel |
User-Agent ve dil başlıklarından cihaz, işletim sistemi, tarayıcı ve bot tespiti | $device->userAgent |
YakNet\Api\TextUtils |
Türkçe metin/okuma süresi analizi, güvenli Markdown HTML, slug ve Link Unfurl | $text->text, $text->web |
YakNet\Api\CloudTime |
IANA zaman dilimi dönüştürücü, yaz saati (DST) ve Cron önizleme motoru | $time->timezones, $time->cron |
Kurulum
composer require yaknet/api-client-services
Hızlı Başlangıç
1. İstemci (Client) Kimlik Doğrulaması
YakNet Developer Console → API'ler ve Servisler ekranından aldığınız Proje API Anahtarını (yk_live_...) veya OAuth 2.0 Client ID / Client Secret bilgilerinizi tanımlayın:
use YakNet\Api\Client; $client = new Client(); $client->setApplicationName('BenimUygulamam'); $client->setApiKey('yk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); // Alternatif: OAuth 2.0 İstemci Kimliği & Gizli Anahtarı ile: // $client->setClientCredentials('CLIENT_ID', 'CLIENT_SECRET');
2. Cloud Storage Kullanımı
use YakNet\Api\Storage; use YakNet\Api\Storage\CreateBucketRequest; use YakNet\Api\Storage\PutObjectRequest; $storage = new Storage($client); // Yeni kova oluşturma $storage->buckets->insert(new CreateBucketRequest([ 'name' => 'faturalar-2026', 'location' => 'tr-istanbul1', 'storage_class' => 'STANDARD', ])); // Nesne yükleme $storage->objects->insert('faturalar-2026', new PutObjectRequest([ 'key' => 'kasim/fatura-1042.json', 'content' => json_encode(['tutar' => 1450.00, 'para_birimi' => 'TRY']), 'mime_type' => 'application/json', ])); // Kovaları listeleme (Collection doğrudan foreach ile dönülebilir) foreach ($storage->buckets->listBuckets() as $bucket) { echo $bucket->getUri() . ' (' . $bucket->getObjectsCount() . " nesne)\n"; }
3. Secret Manager Kullanımı
use YakNet\Api\SecretManager; $secrets = new SecretManager($client); $version = $secrets->secrets->access('PAYMENT_API_SECRET'); $apiSecret = $version->getPayload();
4. Cloud Datastore (NoSQL) Kullanımı
use YakNet\Api\Datastore; use YakNet\Api\Datastore\UpsertDocumentRequest; $datastore = new Datastore($client); $datastore->documents->upsert('kullanicilar', 'usr_1001', new UpsertDocumentRequest([ 'data' => [ 'ad' => 'Ayşe Yılmaz', 'paket' => 'kurumsal', 'aktif' => true, ], ])); $belge = $datastore->documents->get('kullanicilar', 'usr_1001'); print_r($belge->getData());
5. Cloud Pub/Sub & Cloud Logging
use YakNet\Api\Logging; use YakNet\Api\Logging\WriteLogEntryRequest; use YakNet\Api\PubSub; use YakNet\Api\PubSub\PublishMessageRequest; $pubsub = new PubSub($client); $pubsub->topics->publish('siparis.olustu', new PublishMessageRequest([ 'message' => ['siparis_no' => 'YN-9081'], 'attributes' => ['kaynak' => 'web'], ])); $logging = new Logging($client); $logging->entries->write(new WriteLogEntryRequest([ 'action' => 'checkout.completed', 'severity' => 'INFO', 'summary' => 'Sipariş #YN-9081 tamamlandı', 'details' => ['tutar' => 2400], ]));
6. Cloud KMS, Cloud DLP & Cloud TOTP (Yardımcı Mikroservisler)
use YakNet\Api\CloudKms; use YakNet\Api\CloudKms\EncryptRequest; use YakNet\Api\Dlp; use YakNet\Api\Dlp\DeidentifyContentRequest; use YakNet\Api\Totp; use YakNet\Api\Totp\TotpEnrollRequest; // Proje izoleli XChaCha20-Poly1305 zarf şifreleme $kms = new CloudKms($client); $enc = $kms->cryptoKeys->encrypt('odeme-anahtari', new EncryptRequest([ 'plaintext' => 'TR330006100519786457841326', ])); $ciphertext = $enc->getCiphertext(); // ykms:v1:... // KVKK hassas veri maskeleme (TCKN, IBAN, Kredi Kartı, E-Posta) $dlp = new Dlp($client); $masked = $dlp->content->deidentify(new DeidentifyContentRequest([ 'text' => 'Müşteri TCKN: 10000000146, E-posta: ayse@yakhub.com.tr', 'strategy' => 'mask', ])); echo $masked->getTransformedText(); // RFC 6238 İki Aşamalı Doğrulama (2FA) kaydı ve SVG QR üretimi $totp = new Totp($client); $enroll = $totp->authenticator->enroll(new TotpEnrollRequest([ 'account_name' => 'ayse@yakhub.com.tr', 'issuer' => 'YakDocs', ])); $qrDataUri = $enroll->getQrDataUri();
7. Gelen Webhook İmzalarını Doğrulama (X-YakNet-Signature)
use YakNet\Api\Webhook\SignatureVerifier; $rawBody = file_get_contents('php://input') ?: ''; $signature = $_SERVER['HTTP_X_YAKNET_SIGNATURE'] ?? ''; if (!SignatureVerifier::verify($rawBody, $signature, 'whsec_gizli_imza_anahtariniz')) { http_response_code(401); exit('Geçersiz imza'); }
Otomatik Kod Üretimi (Discovery Generator)
Konsola yeni bir API servisi veya metot eklendiğinde tüm Service, Resource, Model ve Collection sınıflarını otomatik üretmek için:
# Yerel discovery/*.json şemalarından üretir: composer generate # Doğrudan canlı YakNet Developer Console Discovery API'sinden şemaları çekip üretir: php bin/generate-services --url=https://developer-console.yakhub.com.tr/api/discovery/v1/apis
Test ve Statik Analiz
composer test
composer analyze
Lisans
YakNet Bilişim tarafından geliştirilmiştir ve MIT Lisansı ile lisanslanmıştır.