PushizoDocs
Güvenlik & uyum

API anahtarları ve kapsamlar

Public API anahtarları — biçim, app/org kapsamı, kapsam (scope) listesi ve rol kuralı, IP izin listesi, bitiş tarihi, rotasyon, iptal ve en iyi uygulamalar.

API anahtarı (hs_live_ ya da hs_test_ öneki + 40 karakter base62) sunucu tarafı erişim içindir ve Authorization: Bearer başlığıyla gönderilir. Anahtar SHA-256 özetiyle saklanır; ham değer yalnızca oluşturma ve rotasyon yanıtında görünür. Dashboard Organizasyon → API anahtarları ya da POST /v1/apps/{app_id}/api-keys (admin).

Kapsam (scope) listesi

KapsamYetkiGerekli üye izni
notifications:writeBildirim oluşturma/iptal, alıcı tahmini, journey run tetiklemecampaigns.send
users:readKullanıcı, abonelik, alias, bildirim kutusu, tercih, suppression okumausers.read
users:writeKullanıcı/abonelik/alias/tercih/suppression yazma, KVKK silmeusers.write
events:writeOlay göndermeusers.write
segments:readSegment listeleme, önizleme, tahminusers.read
analytics:readRaporlar; mesaj/kampanya/journey/şablon/in-app istatistikleri ve listelerianalytics.read
mcp:writeMCP yazma araçları: yalnızca kampanya/segment taslağı oluşturur, gönderim yapmazcampaigns.create, segments.write
adminTüm kapsamlar + kanal kimlik bilgileri, webhook'lar, şablon/kampanya/journey/in-app yönetimi, export/import, API anahtarları, app oluşturma, org/audit okumatüm izinler (yalnızca owner/admin)

Kural: anahtarı oluşturan/düzenleyen/döndüren üyenin rolü, verilen kapsamların gerektirdiği izinlerin hepsine sahip olmalıdır (yetki yükseltme engeli). Her işlemin gerektirdiği kapsam API referansında işlem başlığının altında yazar.

App ve org kapsamı

  • App'e bağlı anahtar: yalnızca o app'in kaynakları; app_id yolda/sorguda/gövdede verilmese de bağlı app kullanılır.
  • Org geneli anahtar (app_id: null): tüm app'ler; GET /v1/apps, POST /v1/apps, GET /v1/organization* ve usage için gerekir. app_scopes ile belirli app'lere kısıtlı üyeler org geneli anahtar oluşturamaz.

Alanlar

AlanAçıklama
nameGörünen ad
scopes[]En az bir kapsam
environmentlive (varsayılan, önek hs_live_) ya da test (önek hs_test_); üretim/staging entegrasyonlarını ayırmak için kullanılır
ip_allowlist[]CIDR (IPv4/IPv6); boşsa sınırsız. Dışındaki istek 403 HS_FORBIDDEN (details.reason: ip_not_allowed). Vekil arkasında TRUST_PROXY ile gerçek IP alınır
expires_atBitiş; geçince 401 HS_UNAUTHENTICATED

Yaşam döngüsü

İşlemUç
OluşturPOST /v1/apps/{app_id}/api-keys → { id, key, prefix, scopes, … } (ham key yalnızca burada)
ListeGET /v1/apps/{app_id}/api-keys (önek, kapsamlar, son kullanım, bitiş)
GüncellePATCH …/api-keys/{key_id} (ad, kapsamlar, IP listesi, bitiş)
RotasyonPOST …/api-keys/{key_id}/rotate → yeni ham anahtar; eski anahtar hemen geçersiz
İptalDELETE …/api-keys/{key_id}; iptal önbelleği ≤ 5 sn içinde düşer

Örnekler: API → API anahtarları. Oluşturma, güncelleme, rotasyon ve iptal denetim kaydına (ad, önek, kapsamlar, IP listesi) yazılır.

Hata yanıtları

DurumKodNeden
401HS_UNAUTHENTICATEDBaşlık yok/geçersiz, iptal edilmiş ya da süresi dolmuş anahtar, /internal rotasına API anahtarıyla istek
403HS_FORBIDDENKapsam yetersiz, IP izin listesi dışı, org geneli gerektiren işlem app anahtarıyla
403HS_ORG_SUSPENDEDOrganizasyon askıda (yalnızca faturalama okunabilir)
429HS_RATE_LIMITED / HS_QUOTA_EXCEEDEDHız sınırı ya da plan kotası

En iyi uygulamalar

  • Her entegrasyon için ayrı, en dar kapsamlı anahtar; admin yalnızca yönetim otomasyonları için.
  • Anahtarı ortam değişkeninde tutun; istemciye, mobil uygulamaya ya da depoya koymayın. Dashboard Loglar ekranı anahtarın son kullanımını gösterir.
  • Üretim/staging için live/test ortamlarını ayırın; sızma şüphesinde rotasyon yapın (eski anahtar anında geçersizdir, uygulamanızı yeni anahtarla aynı anda güncelleyin).
  • Vekil/NAT arkasındaysanız IP izin listesini çıkış IP'lerinizle sınırlayın.
  • SDK'larda baseUrl/apiUrl HTTPS olmalı; bölgesel API köküne yönlendirme (421) SDK tarafından izlenir (veri yerleşimi).

Bu sayfada