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

# API Erişim Ön Koşulu: OAuth Uygulaması ve Token Alma

> Flextell API'ye istek atabilmek için OAuth Client oluşturma, scope seçme ve Authorization Code akışıyla Access Token alma adımları.

<Info>
  **Kullanım amacı:** API endpoint'lerine istek atabilmek için gerekli olan **Access Token**'ı Authorization Code akışıyla altyapıdan talep edebilmek.
</Info>

API'lerimize erişim sağlayabilmek için öncelikle sistemde bir **OAuth Client (Uygulama)** tanımlamanız ve doğru **yetki kapsamlarını (scopes)** belirlemeniz gerekmektedir.

## 1. Uygulama (Client) oluşturma adımları

Access Token alabilmek için gerekli istemciyi oluşturmak adına App Panelindeki **Wizard (Sihirbaz)** adımlarını izleyin:

<Steps>
  <Step title="Panele giriş">
    Sisteme kendi kullanıcı hesabınızla giriş yapın.
  </Step>

  <Step title="Menüye gidin">
    Sol menüden **Bağlantılar → Uygulamalar** sayfasına gidin.
  </Step>

  <Step title="Yeni kayıt">
    Sağ üstteki **"Uygulama Oluştur"** butonuna tıklayarak sihirbazı başlatın.
  </Step>
</Steps>

### Adım 1: Uygulama bilgileri

<ParamField body="Uygulama Adı" type="string" required>
  Entegrasyonu yapacak uygulamanın adı (örn. Postman, Mobil Uygulama, Partner Entegrasyonu).
</ParamField>

<ParamField body="Yönlendirme URI'leri (Redirect URIs)" type="array" required>
  **En az 1 adet** girmek zorunludur. Sistemin yetki onayından sonra döneceği adrestir.

  * **Postman için:** Postman'in OAuth callback URL'si
  * **Kendi uygulamanız için:** Uygulamanızın OAuth onayını yakalayacağı endpoint
</ParamField>

<Note>
  Bu aşamada yetki kapsamları (scopes) ekranda görünmez. İzinleri bir sonraki adımda düzenleme modunda seçeceğiz. **Kaydet** diyerek ilerleyin.
</Note>

### Adım 2: Kimlik bilgileri (çok önemli)

Kaydetme işleminden sonra karşınıza kimlik bilgilerini gösteren bir ekran çıkacaktır:

| Alan            | Açıklama                         |
| --------------- | -------------------------------- |
| `Client ID`     | Uygulamanızın benzersiz kimliği. |
| `Client Secret` | Uygulamanızın gizli anahtarı.    |

<Warning>
  `Client Secret` değeri güvenlik gereği **sadece bu ekranda bir kez gösterilir**. Lütfen bu değeri güvenli bir yere (Postman Environment vb.) kopyalayıp saklayın.
</Warning>

### Adım 3: İzinler / yetki kapsamları (scopes)

Yönlendirme URI'leri alanının hemen altında bulunan listeden, uygulamanın ihtiyaç duyduğu yetkileri (örn. `customers:read`, `appointments:write`) işaretleyin ve **Kaydet** diyerek ilerleyin.

<Warning>
  **Önemli:** Sistem mimarisi gereği yetki kapsamları (`scopes`) sadece **yeni uygulama oluşturulurken** (Wizard ekranında) seçilebilir.

  Uygulamayı kaydettikten sonra "Düzenle" (Edit) ekranına girdiğinizde scope'ları **değiştiremezsiniz**. Eğer mevcut bir uygulamanın yetkilerini güncellemeniz gerekirse, o uygulamayı **silip yeni bir uygulama (client) oluşturmanız** gerekmektedir.
</Warning>

## 2. Postman ile token alma (Authorization Code akışı)

Elde ettiğiniz kimlik bilgileriyle Postman üzerinden ilk token'ınızı almak için ilgili isteğin **Authorization** sekmesini aşağıdaki gibi doldurun:

| Alan                      | Değer                                                                                                           |
| ------------------------- | --------------------------------------------------------------------------------------------------------------- |
| **Type**                  | `OAuth 2.0`                                                                                                     |
| **Grant Type**            | `Authorization Code`                                                                                            |
| **Callback URL**          | Panelde girdiğinizin aynısı                                                                                     |
| **Auth URL**              | `{{base_url}}/oauth/authorize`                                                                                  |
| **Access Token URL**      | `{{base_url}}/oauth/token`                                                                                      |
| **Client ID**             | Panelden aldığınız Client ID                                                                                    |
| **Client Secret**         | Panelden kopyaladığınız Client Secret                                                                           |
| **Scope**                 | Panelde seçtiğiniz scope'ları aralarında **boşluk bırakarak** yazın (örn. `customers:read appointments:write`). |
| **Client Authentication** | `Send as Basic Auth header`                                                                                     |

<Tip>
  Tüm bunları doldurduktan sonra **"Get New Access Token"** butonuna tıklayın. Karşınıza sistemin giriş ekranı çıkacak; giriş yapıp izin verdikten sonra Postman otomatik olarak Access Token'ınızı alacaktır.
</Tip>

## 3. Token sonrası ilk adımlar ve tenant seçimi

Token'ı aldıktan sonra, sistemin geri kalanını kullanabilmek için **bağlamı (tenant'ı)** belirlemeniz gerekir. İdeal başlangıç akışı şöyledir:

<Steps>
  <Step title="Profilinizi ve tenant'larınızı görün">
    `GET /api/v1/account` veya `GET /api/v1/account/tenants` isteklerini atarak hesabınıza bağlı kliniklerin (tenant) listesini ve ID'lerini öğrenin.
  </Step>

  <Step title="Tenant ID'yi sabitleyin">
    Çalışmak istediğiniz tenant'ın ID'sini (örn. `5`) Postman değişkenlerinize ekleyin.
  </Step>

  <Step title="İsteklere başlayın">
    Bundan sonraki tüm tenant-bağımlı API isteklerinizde (Randevular, Hastalar, Dosyalar vb.) header kısmına `X-Tenant: 5` bilgisini eklemeyi unutmayın.
  </Step>
</Steps>

<Note>
  `/account` ve `/account/tenants` dışındaki tüm tenant-bağımlı endpoint'ler için `X-Tenant` header'ı **zorunludur**.
</Note>
