İçeriğe geç
Sursa Developers

Kimlik doğrulama

Sursa API’ye yapılan her istek, Authorization başlığında bir API anahtarı ya da bir uygulamanın OAuth erişim belirtecini taşır:

Authorization: Bearer kb_3f9c…

Anahtar kuruluşu tanımlar ve isteğin neyi görebileceğini ve değiştirebileceğini belirler: anahtarın rolü, kapsamları, veri profili ve koleksiyonları. API adresinde oturum ya da çerez yoktur. Her istek ayrı ayrı doğrulanır; bu yüzden aynı anahtarla istekleri paralel olarak ve birden fazla sunucudan gönderebilirsiniz.

curl https://api.sursa.com/v1/me \
  -H "Authorization: Bearer $SURSA_API_KEY"

Daha önceki entegrasyonlar anahtarı bunun yerine X-API-Key başlığında gönderebilir. Bu başlık hâlâ kabul edilir, ancak yeni kodda Authorization: Bearer kullanılmalıdır.

Kimlik bilgisi türleri

Kimlik bilgisiGörünümüNerede çalışır
Kuruluş API anahtarıkb_…API’nin tüm uç noktalarında; anahtarın rolü, kapsamları, veri profili ve koleksiyonları sınırları içinde.
Özel kaynak anahtarıkbsrc_…Yalnızca kendi özel kaynağının gönderim (push) uç noktalarında (/v1/push/sources/{source_id}/…).
OAuth erişim belirtecikbat_…API başvurusundaki uç noktalarda; belirtecin kapsamları sınırları içinde. POST /oauth/token üzerinden yetkilendirme koduyla alınan belirteç, onay veren çalışan adına hareket eder; client_credentials belirteci ise bir API anahtarı gibi kuruluş adına hareket eder. 1 saat geçerlidir.

Hepsi aynı şekilde gönderilir. Özel kaynak anahtarıyla kendi kaynağının dışındaki hiçbir şey okunamaz, aranamaz ya da değiştirilemez; bu anahtarı, bir entegrasyon platformu gibi üçüncü bir tarafın sakladığı yerlerde kullanın.

Kimlik doğrulama hataları

Durum ve kodAnlamıNe yapmalı
401 auth.not_authenticatedAnahtar yok, yanlış yazılmış ya da iptal edilmiş.Başlığı ve anahtarın değerini kontrol edin.
401 api_keys.expiredAnahtarın sona erme tarihi geçmiş.Yeni bir anahtar oluşturun ve eskisinin yerine koyun.
401 sources.push_key_invalidÖzel kaynak anahtarı yanlış, iptal edilmiş ya da başka bir kaynağa ait.Anahtarı ve yoldaki kaynak kimliğini kontrol edin.
401 oauth.token_expiredOAuth erişim belirtecinin süresi dolmuş.Yenileme belirteciyle yeni bir belirteç alın.
403 api_keys.scopeAnahtarın bu işlem için kapsamı yok.Kapsamı ekleyin ya da bu kapsama sahip bir anahtar kullanın.
403 api_keys.feature_disabledKuruluşun planı API anahtarlarını içermiyor.Kuruluşun yöneticisiyle iletişime geçin.
403 api_keys.ip_not_allowedİstek, anahtar için izin verilen adreslerin dışındaki bir adresten geliyor.İzin verilen bir ağdan çağırın ya da anahtarın adreslerini değiştirin.
403 api_keys.mcp_onlyKişisel bir MCP anahtarı /mcp uç noktasının dışında kullanılmış.API için bir kuruluş API anahtarı kullanın.
403 oauth.operation_not_allowedİşlem herkese açık API’nin parçası değil, bu yüzden OAuth belirteci onu çağıramaz.API başvurusundaki bir işlemi kullanın.
403 org.suspendedKuruluş askıya alınmış. Verileri korunur.Kuruluşun yöneticisiyle iletişime geçin.

403, isteğin kimliğinin doğrulandığını ancak isteğe izin verilmediğini gösterir. Anahtarın erişemediği bir nesne, var olmayan bir nesne gibi 404 yanıtı verir; böylece bir anahtar erişiminin dışında ne olduğunu öğrenemez.

Bir veri profili adına çalışma

admin rolüne sahip bir anahtar, başka bir kişi grubunun ne göreceğini kontrol edebilir: X-View-As başlığı, isteği bir veri profili ve isteğe bağlı olarak bir rol adına çalıştırır.

curl "https://api.sursa.com/v1/cards?limit=20" \
  -H "Authorization: Bearer $SURSA_ADMIN_KEY" \
  -H "X-View-As: employee:viewer"

Bu moddaki istekler yalnızca okuma yapar: her değişiklik isteği view_as.read_only koduyla 403 döndürür. OAuth belirteci ya da admin rolü olmayan bir anahtar X-View-As başlığını kullanamaz: istek view_as.admin_key_required koduyla 403 döndürür. Var olan hiçbir profili belirtmeyen bir başlık view_as.invalid_header koduyla 400 döndürür.

Tarayıcı uygulamaları

API her web kökeninden gelen isteklere izin verir (Access-Control-Allow-Origin: *) ve hiçbir zaman çerez kullanmaz; bu yüzden bir sayfa API’yi fetch ile çağırabilir. Bu durumda anahtar sayfanın içinde bulunur ve sayfayı kullanan herkes onu görebilir. API’yi tarayıcıdan yalnızca bu kullanıcılara göstermeyi kabul ettiğiniz bir anahtarla çağırın (örneğin herkese açık koleksiyonlarla sınırlı bir viewer anahtarı) ya da tarayıcı ile Sursa arasına kendi sunucunuzu koyun.

Yalnızca bir çalışanın yapabildikleri

Kuruluş API anahtarı bir kişi adına değil, kuruluş adına hareket eder. API’nin iki bölümü kişilere aittir; bu yüzden yalnızca bir çalışan adına hareket eden bir belirteçle kullanılabilir: Sursa’daki bir oturum ya da çalışanın onayıyla verilmiş bir OAuth erişim belirteci.

Sohbetler bir kişiye aittir. Kuruluş API anahtarına GET /v1/conversations yanıtında yalnızca anahtarın kendi başlattığı sohbetler gösterilir. Herkese açık API’de sohbet başlatan bir işlem yoktur; bu yüzden bir anahtar için liste normalde boştur ve çalışanların sohbetleri ona hiçbir zaman gösterilmez. Sohbet dışında POST /v1/ask ya da POST /v1/chat ile sorulan sorular, ask kapsamına sahip her anahtarla çalışır. Bir çalışanın sohbetlerini listelemek ve birinin geçmişini GET /v1/conversations/{conv_id} ile okumak için API’yi o çalışan adına bir OAuth belirteciyle çağırın. Belirteç yalnızca o çalışanın kendi sohbetlerine erişir; başka her sohbet conversations.not_found koduyla 404 döndürür.

Kartı yalnızca bir çalışan doğrular. Doğrulama, içeriği bir kişinin kontrol ettiğini teyit eder; bu yüzden POST /v1/cards/{card_id}/verification/verify ve POST /v1/cards/{card_id}/verify için bir oturum ya da kartı doğrulayabilecek bir çalışan adına verilmiş bir OAuth belirteci gerekir. Kuruluş API anahtarıyla ya da client_credentials belirteciyle bu işlemler cards.verify_user_account_required koduyla 400 döndürür. Önce olağan denetimler yapılır: anahtarın erişemediği bir kart 404, kartı doğrulama izni olmayan bir anahtar 403 yanıtı alır.