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

# Odalar API

> Klinikte randevuların gerçekleştirildiği veya tedavilerin uygulandığı fiziksel alanları (odaları) yönetmek için endpoint'ler.

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

## Endpoint özeti

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

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

## Oda kavramı

Oda (`Room`), klinikte randevuların gerçekleştirildiği veya tedavilerin uygulandığı **fiziksel alanları** temsil eder. Sistemde bir oda; adı, genel durumu (`active`, `inactive`, `maintenance`) ve randevularla olan ilişkisi üzerinden yönetilir. **Randevu süreçleri odaların uygunluk durumlarına göre planlanır.**

## Silme kuralları

<Note>
  Odaların silinmesi, randevu (`Appointment`) veri bütünlüğünü korumak adına **katı ilişki kurallarına** bağlanmıştır.
</Note>

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

Oda veritabanından kalıcı olarak silinmez, **soft delete** edilir.

<Warning>
  **Katı iş kuralı:** Odanın mevcut herhangi bir randevu (`appointment`) ile ilişkisi varsa silme işlemi reddedilir.

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

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

Oda veritabanından kalıcı olarak silinir.

<Warning>
  Geri alınamaz.

  **Katı iş kuralı:** Odanın, **soft delete edilmiş randevular dahil** olmak üzere herhangi bir randevu ile ilişkisi varsa kalıcı silme reddedilir.

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

## Yetkilendirme

### Uygulama izinleri (permissions)

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

### Token scope'ları (Passport)

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