> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Genel Bakış

> Flextell çoklu kiracı (multi-tenant) bir platformdur. Her API isteğinde hangi kliniğe (tenant) ait işlem yapıldığını X-Tenant header'ı ile belirtirsiniz.

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.

```bash theme={null}
curl --request GET \
  --url https://dev.flextell.ai/api/v1/customers \
  --header "Authorization: Bearer $TOKEN" \
  --header "X-Tenant: 12"
```

<ResponseField name="X-Tenant" type="string" required>
  İsteğin yapılacağı klinik (tenant) ID'si. Kullanıcının erişim yetkisi olan bir tenant olmalıdır.
</ResponseField>

### Header davranışı

| Durum                                             | Yanıt                                                |
| ------------------------------------------------- | ---------------------------------------------------- |
| Header gönderilmedi                               | `400 Bad Request` — `"X-Tenant header is required."` |
| Token yok / geçersiz                              | `401 Unauthorized` — `"Unauthenticated."`            |
| Tenant mevcut değil veya kullanıcının erişimi yok | `404 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:

```bash theme={null}
curl --request GET \
  --url https://dev.flextell.ai/api/v1/account/tenants \
  --header "Authorization: Bearer $TOKEN"
```

Yanıt:

```json theme={null}
{
  "success": true,
  "data": [
    { "id": 12, "name": "Merkez Klinik", "logo_url": "https://..." },
    { "id": 27, "name": "Şube A",        "logo_url": null }
  ]
}
```

<Note>
  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.
</Note>

## 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](/tenancy/roles).

## 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.
