Skip to main content
Flextell’de bir kullanıcı birden fazla kliniğe erişebilir. Örneğin bir zincir polikliniğin merkezi yöneticisi üç ayrı tenant’ta yetkiliyse; bir dış laboratuvar doktoru kendi kurumu ve anlaşmalı kliniklerde çalışıyorsa — aynı kullanıcı hesabı, farklı tenant’larda farklı veri ve yetki görür. Bu nedenle Flextell API’de token tek başına yetmez: hangi tenant adına konuştuğunuzu da her istekte belirtirsiniz.

X-Tenant header’ı

Tenant’a bağlı tüm endpoint’ler için X-Tenant header’ını gönderin. Değer, ilgili kliniğin sayısal ID’sidir.
curl --request GET \
  --url https://dev.flextell.ai/api/v1/customers \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
X-Tenant
string
required
İsteğin yapılacağı klinik (tenant) ID’si. Kullanıcının erişim yetkisi olan bir tenant olmalıdır.

Header davranışı

DurumYanıt
Header gönderilmedi400 Bad Request"X-Tenant header is required."
Token yok / geçersiz401 Unauthorized"Unauthenticated."
Tenant mevcut değil veya kullanıcının erişimi yok404 Not Found"Tenant not found."
Hepsi geçerliİstek normal şekilde işlenir

X-Tenant gerektirmeyen uçlar

Kullanıcının hangi tenant’lara erişebildiğini öğrendiğiniz uçlar doğal olarak tenant-bağımsızdır:
  • GET /api/v1/account — kullanıcının profili
  • GET /api/v1/account/tenants — kullanıcının erişebildiği tenant listesi
  • GET/POST /api/v1/account/two-factor/* — 2FA yönetimi
  • GET /api/v1/account/browser-sessions — aktif oturumlar
  • GET /api/v1/exchange-rates — günlük döviz kuru
Diğer tüm v1 uçları X-Tenant bekler.

Erişilebilir tenant’ları listeleme

Kullanıcı oturum açtıktan hemen sonra, UI’da bir “klinik seçici” göstermek için tenant listesini çekin:
curl --request GET \
  --url https://dev.flextell.ai/api/v1/account/tenants \
  --header "Authorization: Bearer $TOKEN"
Yanıt:
{
  "success": true,
  "data": [
    { "id": 12, "name": "Merkez Klinik", "logo_url": "https://..." },
    { "id": 27, "name": "Şube A",        "logo_url": null }
  ]
}
Tipik UX kalıbı: kullanıcı login olduktan sonra tenant seçer, seçilen ID’yi session’da saklarsınız. Her sonraki istekte bu değeri X-Tenant olarak gönderirsiniz. Kullanıcı başka bir kliniğe geçtiğinde değeri güncellersiniz.

Tenant başına veri izolasyonu

  • Bir tenant’ın verisi başka tenant’a sızmaz. X-Tenant: 12 ile oluşturduğunuz bir randevuyu X-Tenant: 27 ile göremezsiniz.
  • Ayarlar (randevu, bildirim, chat vb.) tenant bazlıdır.
  • Roller ve izinler de tenant bazlıdır — aynı kullanıcı bir tenant’ta Admin, başka tenant’ta Resepsiyonist olabilir. Bkz. Roller & İzinler.

Yanlış tenant’a istek atmak

Kullanıcının erişimi olmayan bir tenant ID’si gönderirseniz 404 alırsınız — 403 değil. Bunun nedeni güvenliktir: kullanıcıya başka tenant’ların varlığını ima etmeyiz. Dolayısıyla 404 gördüğünüzde öncelikle şunu kontrol edin:
  1. X-Tenant değeri doğru mu?
  2. Kullanıcı token’ın sahibi, bu tenant’ta gerçekten yetkili mi?
  3. Token’ın scope’ları yaptığınız işlem için yeterli mi? (Yeterli değilse scope hatası 403 olarak döner.)

Sık yapılan hatalar

  • Global saklama. X-Tenant’ı SDK’nızda global olarak kablolamak yerine, kullanıcının aktif oturumunda dinamik olarak okumayı tercih edin.
  • Tenant ID cache. Tenant listesini uzun süreli cache’lemeyin; kullanıcı bir klinikten çıkarılırsa bayat veri gösterirsiniz.
  • Yanlış başlık adı. Header adı tam olarak X-Tenant’tır — X-Tenant-Id veya Tenant-Id değil.