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

# Hasta API

> Klinik tarafından kayıt altına alınmış müşterileri (hastaları) yönetmek için kullanılan endpoint'ler. Müşteri formları ve dosyaları için alt endpoint'ler de içerir.

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

## Endpoint özeti

| Metot    | Endpoint                                               | Açıklama                                           |
| -------- | ------------------------------------------------------ | -------------------------------------------------- |
| `GET`    | `/api/v1/customers`                                    | Müşterileri filtreli olarak listeler               |
| `GET`    | `/api/v1/customers/{id}`                               | Tek bir müşteriyi detaylı getirir                  |
| `POST`   | `/api/v1/customers`                                    | Yeni müşteri oluşturur                             |
| `PUT`    | `/api/v1/customers/{id}`                               | Müşteriyi kısmi günceller                          |
| `DELETE` | `/api/v1/customers/{id}`                               | Müşteriyi soft delete eder                         |
| `DELETE` | `/api/v1/customers/{id}/force`                         | Müşteriyi kalıcı olarak siler                      |
| `GET`    | `/api/v1/customers/{customerId}/form`                  | Müşteriye ait formları listeler                    |
| `GET`    | `/api/v1/customers/{customerId}/form/{customerFormId}` | Tek bir müşteri formunu getirir                    |
| `GET`    | `/api/v1/customers/{id}/files`                         | Müşteriye ait dosyaları gruplanmış olarak listeler |

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

## Müşteri kavramı

Customer API'de "müşteri", klinik tarafından kayıt altına alınmış **gerçek kişiyi** temsil eder. Customer API, müşteriyle ilişkili tüm bu verilerin **merkezi erişim noktasıdır**.

## İş kuralları

<Warning>
  `user_id` başka bir tenant'a ait bir kullanıcıyı işaret ediyorsa hata döner: `The selected user does not belong to this tenant.`
</Warning>

<Note>
  **Yaş filtresi davranışı:** Sistem yaş bilgisini doğum tarihine çevirerek filtreleme yapar (`bugünün tarihi - yaş`).
</Note>

## Müşteri dosyaları

Müşteriye ait dosyalar `GET /api/v1/customers/{id}/files` ile çekilir. Dosyalar `group_id` alanına göre **gruplanır** — aynı işlem veya yükleme oturumuna ait dosyalar tek başlık altında listelenir.

## Yetkilendirme

### Uygulama izinleri (permissions)

| İşlem                 | Gerekli izin(ler)                                |
| --------------------- | ------------------------------------------------ |
| Müşteri listesi       | `ViewAny:Customer`                               |
| Müşteri detayı        | `View:Customer`                                  |
| Müşteri oluşturma     | `Create:Customer`                                |
| Müşteri güncelleme    | `Update:Customer`                                |
| Soft delete           | `Delete:Customer`                                |
| Force delete          | `ForceDelete:Customer`                           |
| Formları listeleme    | `ViewAny:Customer` **VE** `ViewAny:CustomerForm` |
| Tek form görüntüleme  | `View:Customer` **VE** `View:CustomerForm`       |
| Dosyaları görüntüleme | `View:Customer` **VE** `View:File`               |

### Token scope'ları (Passport)

#### Müşteri ana endpoint'leri

| İşlem                          | Gerekli Scope     |
| ------------------------------ | ----------------- |
| Listeleme / Detay              | `customers:read`  |
| Oluşturma / Güncelleme / Silme | `customers:write` |

#### Müşteri formları

| İşlem             | Gerekli Scope'lar                       |
| ----------------- | --------------------------------------- |
| Listeleme / Detay | `customers:read`, `customer_forms:read` |

#### Müşteri dosyaları

| İşlem     | Gerekli Scope    |
| --------- | ---------------- |
| Listeleme | `customers:read` |

<Tip>
  Dosyalar için ayrıca ayrı bir scope tanımlı değildir; müşteri okuma (`customers:read`) izni yeterlidir.
</Tip>

#### Müşteri notları

| İşlem | Gerekli Scope'lar                |
| ----- | -------------------------------- |
| Okuma | `customers:read`, `notes:read`   |
| Yazma | `customers:write`, `notes:write` |
