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

# Genel Bakış

> Flextell API, OAuth 2.0 Authorization Code grant'i ile kimlik doğrular. Bu sayfa akışı ve temel terimleri özetler.

Flextell API, **OAuth 2.0 Authorization Code** akışını kullanır. Kısaca: kullanıcı sizi yetkilendirir, siz `code`'u alırsınız, `code`'u `access_token` ile değişirsiniz ve token'ı her istekte `Authorization: Bearer` header'ı olarak gönderirsiniz.

## Neden OAuth 2.0?

Flextell kliniklere ait hassas sağlık verileri barındırır. Kullanıcıdan parolasını almak yerine OAuth, kullanıcının yalnızca uygulamanızın ihtiyaç duyduğu izinler (`scope`) için yetki vermesine izin verir. Parolası hiçbir zaman sizin sisteminize uğramaz ve kullanıcı istediği zaman yetkiyi iptal edebilir.

## Akış diyagramı

```mermaid theme={null}
sequenceDiagram
    participant K as Kullanıcı
    participant U as Uygulamanız
    participant F as Flextell

    U->>K: 1. Authorize sayfasına yönlendir
    K->>F: 2. Giriş yap & izin ver
    F->>U: 3. redirect_uri?code=...
    U->>F: 4. POST /oauth/token (code)
    F->>U: 5. access_token + refresh_token
    U->>F: 6. GET /api/v1/...  (Bearer)
    F->>U: 7. JSON yanıt
```

## Temel terimler

**Client ID & Client Secret.** Flextell panelinde oluşturduğunuz OAuth uygulamasının kimliği ve gizli anahtarı. `client_secret` yalnızca güvenli (server-side) bir ortamda saklanmalıdır.

**Authorization Code.** Kullanıcı yetki verdikten sonra `redirect_uri`'ye eklenen kısa ömürlü kod. Yalnızca bir kez, access token'a değiştirilmek için kullanılır.

**Access Token.** API isteklerinde `Authorization: Bearer <token>` olarak gönderdiğiniz JWT. Flextell'de access token'lar **15 gün** geçerlidir.

**Refresh Token.** Access token süresi dolduğunda yenisini almak için kullanılır. Flextell'de refresh token'lar **30 gün** geçerlidir. Detay: [Token Yenileme](/authentication/refresh-tokens).

**Scope.** Uygulamanıza verilen izinler (ör. `customers:read`, `appointments:write`). Access token yalnızca onaylanmış scope'lar için çalışır. Tam liste: [Scopes](/authentication/scopes).

**State.** CSRF koruması için yetkilendirme isteğine eklediğiniz rastgele string. Callback'e aynı değerle geri döner; eşleşmezse isteği reddetmelisiniz.

## Desteklenen grant'lar

<ResponseField name="authorization_code" type="grant">
  Son kullanıcı adına istek atmak için standart akış. Tüm web/mobil uygulamalar için tercih edilen yöntemdir. SPA ve native mobil için [PKCE](/authentication/pkce) uzantısı ile birlikte kullanın.
</ResponseField>

<ResponseField name="refresh_token" type="grant">
  Access token'ı yenilemek için. `offline_access` scope'u gerekmez; refresh token tokenle birlikte otomatik döner.
</ResponseField>

<Note>
  `client_credentials` ve `password` grant'ları şu anda desteklenmemektedir. Sunucu-sunucu entegrasyonları için de Authorization Code akışını, ilgili klinik kullanıcısı adına bir kez tamamlayıp refresh token saklamanızı öneririz.
</Note>

## OpenID Connect (kimlik doğrulama)

Flextell'i bir kimlik sağlayıcı olarak kullanmak — yani sadece API'ye erişim değil, "Sign in with Flextell" akışı kurmak — istiyorsanız `scope` parametresine `openid` ekleyin. Yanıta bir `id_token` eklenir ve `/oauth/userinfo`, `/oauth/jwks`, `/.well-known/openid-configuration` gibi OIDC uçlarını kullanabilirsiniz. Detay: [OpenID Connect](/authentication/openid-connect).

## Logout (end\_session\_endpoint)

Kullanıcıyı uygulamanızdan **ve** Flextell oturumundan çıkarmak için OIDC RP-Initiated Logout akışını (`/oauth/logout`) kullanabilirsiniz. Detay: [Token İptali](/authentication/revoke-tokens).

## Token ömürleri

| Token türü            | Süre   |
| --------------------- | ------ |
| Access token          | 15 gün |
| Refresh token         | 30 gün |
| Personal access token | 6 ay   |

## Sonraki adımlar

<CardGroup cols={2}>
  <Card title="Uygulama Oluşturma" icon="plus" href="/authentication/create-app">
    Panelden OAuth uygulaması açın.
  </Card>

  <Card title="Authorization Code Akışı" icon="key" href="/authentication/authorization-code">
    code ↔ token değişiminin adım adım detayı.
  </Card>

  <Card title="OpenID Connect" icon="id-badge" href="/authentication/openid-connect">
    id\_token, discovery URL, userinfo.
  </Card>

  <Card title="PKCE" icon="shield-check" href="/authentication/pkce">
    SPA ve mobil için güvenli code exchange.
  </Card>
</CardGroup>
