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

# Asistanlar API

> Klinikteki randevu, hasta ve operasyonel süreçlere destek veren asistan kullanıcılarını yönetmek için endpoint'ler.

<Note>
  Tüm isteklerde `X-Tenant` header'ı **zorunludur**. İşlemler ve listelemeler sadece belirtilen tenant'a bağlı ve **`assistant`** rolüne sahip kullanıcılar ile sınırlandırılmıştır.
</Note>

## Endpoint özeti

| Metot    | Endpoint                        | Açıklama                             |
| -------- | ------------------------------- | ------------------------------------ |
| `GET`    | `/api/v1/assistants`            | Asistanları filtreli olarak listeler |
| `GET`    | `/api/v1/assistants/{id}`       | Tek bir asistanı detaylı getirir     |
| `POST`   | `/api/v1/assistants`            | Yeni asistan oluşturur               |
| `PUT`    | `/api/v1/assistants/{id}`       | Asistanı kısmi günceller             |
| `DELETE` | `/api/v1/assistants/{id}`       | Asistanı soft delete eder            |
| `DELETE` | `/api/v1/assistants/{id}/force` | Asistanı kalıcı olarak siler         |

<Tip>
  Tüm parametreler, alanlar ve örnek istek/yanıtlar için **[API Referansı](/api-reference)** sekmesine bakın.
</Tip>

## Asistan kavramı

Asistanlar, sistemde klinikteki randevu süreçlerine, hasta işlemlerine veya operasyonel süreçlere destek veren **kullanıcı (User) profilleridir**.

Arka planda standart bir "Kullanıcı (User)" modeli olarak tutulurlar; ancak API isteklerinde otomatik olarak `assistant` rolüne göre filtrelenir ve izole edilirler.

## İş kuralları

<Warning>
  **Limit kontrolü (oluşturma):** Yeni asistan aktif (`is_active: true`) olarak oluşturuluyorsa, sistem tenant'ın **maksimum aktif kullanıcı limitini** kontrol eder. Limit aşılırsa işlem reddedilir (`422`).
</Warning>

**Rol atama:** Asistan başarıyla oluşturulduktan sonra arka planda otomatik olarak tenant'a bağlanır ve kendisine `assistant` rolü atanır. Tenant içinde bu rol tanımlı değilse işlem hata verir.

<Warning>
  **Aktivasyon limiti (güncelleme):** Asistanın durumu pasiften aktife (`is_active: false → true`) çekilmek isteniyorsa, sistem tenant'ın aktif kullanıcı limitini tekrar kontrol eder. Limit doluysa güncelleme reddedilir (`422`).
</Warning>

<Note>
  Tekil asistan görüntüleme (`GET /api/v1/assistants/{id}`) sorgusunda soft delete edilmiş asistanlar da **varsayılan olarak** döndürülür.
</Note>

## Yetkilendirme

Asistanlar arka planda birer **kullanıcı (User)** olduğu için uygulama içi izinler **`User`** nesnesi üzerinden kontrol edilir.

### Uygulama izinleri (permissions)

| İşlem                       | Permission         |
| --------------------------- | ------------------ |
| Listeleme                   | `ViewAny:User`     |
| Detay / Tek gösterme        | `View:User`        |
| Oluşturma                   | `Create:User`      |
| Güncelleme                  | `Update:User`      |
| Silme (soft delete)         | `Delete:User`      |
| Kalıcı silme (force delete) | `ForceDelete:User` |

### Token scope'ları (Passport)

| İşlem                                               | Scope              |
| --------------------------------------------------- | ------------------ |
| Okuma (`index`, `show`)                             | `assistants:read`  |
| Yazma (`store`, `update`, `destroy`, `forceDelete`) | `assistants:write` |
