Authentication
Teknik Danışman REST API'sine erişmek için tenant-scoped Bearer token kullanılır. Bu rehber ilk key'inizi üretip ilk başarılı isteğinizi atmanız için adım adım yürütür.
Hızlı başlangıç
API Keys sayfasına girin
Panel'e admin yetkisiyle giriş yapın → sol menüden API & Webhooks → API Anahtarları.
Tenant başına ayrı key — paylaşılan SaaS ortamında her müşterinin key'i kendi DB'sine erişir, cross-tenant okuma yok.
Yeni key oluşturun
"Yeni Anahtar" → açıklayıcı bir label yazın (örn. fatura-otomasyonu-prod). Bu sadece sizin tanıyabilmeniz için.
Scope seçin (aşağıda detay var):
- read — sadece GET
- write — POST/PUT/DELETE
- admin — read + write (en geniş)
Çoklu scope seçebilirsiniz (örn. read + write).
Key'i bir defaya mahsus kopyalayın
Yanıt ekranında full token yalnızca bir kez gösterilir. Format:
tdk_a1b2c3d4e5f67890abcdef0123456789abcdef01
Yapı: tdk_ (prefix) + 8 hex (ID, panel listesinde görünür) + 32 hex (secret, sadece SHA-256 hash'i saklanır).
İlk isteğinizi atın
Health-check ile başlayın:
curl -i https://teknikdanisman.net/api/v1/ping.php \
-H "Authorization: Bearer tdk_..."
Başarılı yanıt:
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 99
X-RateLimit-Reset: 1718983800
{"ok":true,"api_version":"v1","service":"teknik-danisman","time":"2026-06-22T14:30:01Z"}
Scope sistemi
Her endpoint en az bir scope gerektirir. Key'in admin scope'u varsa hepsine erişir.
| Scope | Erişim | Tipik kullanım |
|---|---|---|
| read | GET /customers.php, /employees.php, /hardware.php, /ping.php |
Salt-okunur dashboard'lar, raporlama, veri ihracı |
| write | POST/PUT/DELETE — kayıt oluşturma, güncelleme, silme; /renew.php |
Otomatik provisioning, CRM senkronizasyonu, dış sistemden kayıt yaratma |
| admin | Yukarıdaki tüm erişimler + ileride eklenecek hassas endpoint'ler | Yalnızca güvenilir backend servisler. Müşteri uygulamalarında kullanmayın. |
read yeterli — yazma yetkisi vermeyin. Compromised key'in zararı scope kadar büyüktür.
Güvenlik en iyi pratikleri
- Asla repo'ya koymayın. Key'i environment variable (
TD_API_KEY) veya secret manager'da tutun..envdosyasını.gitignore'a ekleyin. - İstemci tarafa göndermeyin. Tarayıcı/mobil app'lerden direkt API çağrısı yapmayın — key kullanıcıya açık olur. Kendi backend'inizden proxy'leyin.
- HTTPS zorunlu. HTTP requestlerini sunucu reddeder; clear-text iletim ile key sniff edilir.
- Her entegrasyon için ayrı key. CRM, faturalama, raporlama — her biri kendi label'lı key'iyle. Compromise'da sadece o key'i iptal edin.
- Audit log'ları izleyin. Her başarılı API çağrısı
api_key.*action'ıyla loglanır. Beklenmedik IP veya saat gördüğünüzde key'i iptal edin.
Rotation (kural: 90 günde bir)
Düzenli rotation güvenlik ihlali penceresini küçültür. Önerilen prosedür:
- Aynı scope ile yeni key oluşturun (örn.
fatura-prod-v2). - Entegrasyon konfigürasyonunda yeni key'i kullanın, deploy edin.
- Yeni key'in başarılı çalıştığını doğrulayın (audit log → istek var mı?).
- Eski key'i iptal edin (API Keys → "İptal Et"). Geri alınamaz.
X-TD-Signature-Previous header'ında gönderilir. Detay: Webhook Catalog → Secret rotation.
Rate limit
Key başına 100 istek / dakika (sliding window). Her başarılı yanıtta:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1718983800 # epoch (UTC saniye)
Aşıldığında 429 + Retry-After: 60. Üretim entegrasyonları Remaining'i izleyip backoff uygulamalı.
Sık sorulanlar
Key'i hangi tenant'a bağlı bilmek için ne yapmalıyım?
API Keys sayfasında her key'in altında oluşturulduğu tenant + tarih + scope listesi gösterilir.
Bir key birden fazla tenant'a erişebilir mi?
Hayır. Her key tek tenant'a bağlıdır. Çok tenant entegrasyonu için tenant başına ayrı key üretin.
Key'i istemci taraflı bir uygulamada (SPA, mobil) kullanabilir miyim?
Hayır, asla. Browser DevTools veya APK decompile ile key dışarı sızar. Bunun yerine kendi backend'inizde proxy/middleware kurun.
Key süre dolar mı?
Default'ta süresiz aktiftir. İptal edilene kadar çalışır. Üretim uygulaması için 90 günde bir rotation önerilir.
Sonraki adımlar
- OpenAPI referansı — tüm endpoint'ler, parametreler, response şemaları
- Postman collection — tek tık import ile deneme
- Webhook events — kayıt değişikliklerinde sisteminize push
- Error reference — 26 hata kodu + çözüm