> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orionpanel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ORIONPOS API Kimlik Doğrulama: Token Alma ve Kullanma

> ORIONPOS API'ye güvenli erişim sağlamak için AccessToken ve oturum Token'ı kullanımını öğrenin; adım adım kimlik doğrulama akışını inceleyin.

ORIONPOS API'ye istek gönderebilmek için önce bir oturum token'ı almanız gerekir. Bu süreç iki aşamalıdır: önce size özel statik **AccessToken** ile `/GetToken` endpoint'ini çağırırsınız, ardından dönen **Token** değerini tüm diğer isteklerinizde kullanırsınız.

## Token Tipleri

<CardGroup cols={2}>
  <Card title="AccessToken" icon="key">
    Tarafınıza özel olarak sağlanan **statik erişim anahtarıdır**. Yalnızca `/GetToken` endpoint'ine yapılan isteklerde `AccessToken` header'ı olarak gönderilir. Bu değeri güvende tutun ve kaynak kodunuzda doğrudan yazmaktan kaçının.
  </Card>

  <Card title="Token" icon="shield-check">
    `/GetToken` çağrısından dönen **dinamik oturum token'ıdır**. `/GetToken` dışındaki tüm endpoint'lere yapılan isteklerde `Token` header'ı olarak gönderilir. **1 günlük** geçerlilik süresine sahiptir.
  </Card>
</CardGroup>

## Token Alma ve Kullanma

<Steps>
  <Step title="AccessToken ile /GetToken Çağrısı Yapın">
    `AccessToken` header'ınızı ve kullanıcı bilgilerinizi ekleyerek `POST /GetToken` isteği gönderin.

    <CodeGroup>
      ```bash cURL theme={null}
      curl -X POST https://api.orionpanel.com/GetToken \
        -H "AccessToken: <sizin-access-token'ınız>" \
        -H "Content-Type: application/json" \
        -d '{"Username": "kullanici", "Password": "sifre"}'
      ```

      ```json İstek Gövdesi theme={null}
      {
        "Username": "kullanici",
        "Password": "sifre"
      }
      ```
    </CodeGroup>

    Başarılı bir yanıtta `Data` dizisinin ilk elemanındaki `Token` değerini kaydedin:

    ```json Başarılı Yanıt theme={null}
    {
      "ResultCode": 200,
      "ResultMessage": "OK",
      "Data": [
        {
          "Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
          "ExpireDate": "2025-01-21T23:59:59"
        }
      ]
    }
    ```
  </Step>

  <Step title="Token'ı Sonraki İsteklerde Kullanın">
    Aldığınız `Token` değerini, `/GetToken` dışındaki **tüm endpoint'lerde** `Token` header'ı olarak gönderin.

    ```bash cURL theme={null}
    curl -X GET https://api.orionpanel.com/GetBranches \
      -H "Token: <sizin-token'ınız>"
    ```

    <Tip>
      Token değerini uygulama başlangıcında bir kez alıp güvenli bir değişkende saklayabilirsiniz. Böylece her istekte yeniden `/GetToken` çağrısı yapmanıza gerek kalmaz.
    </Tip>
  </Step>
</Steps>

## Token Yenileme

<Note>
  Oturum token'ınız **1 gün** sonra geçerliliğini yitirir. Token süresi dolduğunda API'den `401 Unauthorized` yanıtı alırsınız. Bu durumda `AccessToken` header'ınızla `/GetToken` endpoint'ini yeniden çağırarak taze bir token edinebilirsiniz. Uygulamanızın token süresini takip edip otomatik olarak yenilemesini öneririz.
</Note>

## Yaygın Kimlik Doğrulama Hataları

<AccordionGroup>
  <Accordion title="401 Unauthorized — Geçersiz veya Eksik Token">
    `Token` header'ı eksik, hatalı yazılmış ya da süresi dolmuş olabilir.

    **Çözüm:** `/GetToken` endpoint'ini çağırarak yeni bir token alın ve isteği tekrar gönderin.
  </Accordion>

  <Accordion title="401 Unauthorized — Geçersiz AccessToken">
    `/GetToken` isteğinde gönderilen `AccessToken` değeri hatalı veya eksik.

    **Çözüm:** Size sağlanan `AccessToken` değerini doğrulayın. Header adının tam olarak `AccessToken` şeklinde yazıldığından emin olun.
  </Accordion>

  <Accordion title="401 Unauthorized — Hatalı Kullanıcı Adı veya Şifre">
    `/GetToken` isteğinde gönderilen `Username` ya da `Password` alanı yanlış.

    **Çözüm:** Kullanıcı adı ve şifrenizi kontrol edin. Şifrenizde özel karakter varsa JSON içinde doğru şekilde kaçışlandığından (escaped) emin olun.
  </Accordion>

  <Accordion title="400 Bad Request — Eksik İstek Gövdesi">
    `/GetToken` isteğinde `Username` veya `Password` alanı gönderilmemiş ya da istek gövdesi boş.

    **Çözüm:** İstek gövdesinin geçerli bir JSON olduğunu ve hem `Username` hem de `Password` alanlarını içerdiğini doğrulayın. `Content-Type: application/json` header'ının eklendiğinden emin olun.
  </Accordion>
</AccordionGroup>
