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

# Doktorlar API

> Klinikte randevu alabilen, tedavi uygulayabilen ve tedavilere atanabilen sağlık personelini yönetmek için endpoint'ler.

<Note>
  Tüm isteklerde `X-Tenant` header'ı **zorunludur**. İşlemler yalnızca belirtilen tenant'a ait doktorlar ile sınırlandırılmıştır.
</Note>

## Endpoint özeti

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

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

## Doktor kavramı

Doktorlar (`doctors`) API'de, klinikte **randevu alabilen, tedavi uygulayabilen ve tedavilere atanabilen** sağlık personelini temsil eder.

Doktorlar API, doktor kartları, tedavi atamaları ve randevuya uygunluk bilgilerinin **merkezi erişim noktasıdır**.

## İş kuralları

<Warning>
  **Tedavi güncelleme (`treatments`):** `treatments` alanı gönderilirse, doktorun mevcut tedavi listesi **tamamen silinip yeni gönderilen listesiyle değiştirilir** (`sync`). Gönderilmezse mevcut atamalar korunur.
</Warning>

## Silme kuralları

### Soft delete (`DELETE /api/v1/doctors/{id}`)

<Warning>
  **Özel kural:** Doktorun **gelecekte planlanmış randevuları** varsa silme işlemi reddedilir.

  Hata mesajı: `This doctor cannot be deleted because it is associated with one or more appointments. Please cancel or reassign all appointments before deleting.`
</Warning>

### Force delete (`DELETE /api/v1/doctors/{id}/force`)

<Warning>
  Geri alınamaz.

  **Özel kural:** Doktor, soft delete edilmiş randevular **dahil** herhangi bir randevuya bağlıysa kalıcı silme reddedilir.

  Hata mesajı: `This doctor cannot be permanently deleted because it is associated with one or more appointments. Please remove the doctor from all appointments before deleting.`
</Warning>

## Yetkilendirme

### Uygulama izinleri (permissions)

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

### Token scope'ları (Passport)

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