# Kullanıcı adıyla oturum aç

`POST /api/v1/login`

Mobil uygulamanın kullandığı oturum açma ucu: kullanıcı adı + şifre (+ iki adımlı doğrulama kodu) karşılığında `xk_` ile başlayan bir oturum belirteci verir. Belirteç `API_TOKEN_DAYS` gün (varsayılan 90) geçerlidir. Sunucudan sunucuya entegrasyonlarda bunun yerine Geliştiriciler sayfasından açılan **API anahtarını** ya da **OAuth**'u kullanın.

## Gövde

| Alan | Tür | Açıklama |
|---|---|---|
| `username` (zorunlu) | string | Kullanıcı adı. |
| `password` (zorunlu) | string | Şifre. |
| `otp` | string | İki adımlı doğrulama açıksa 6 haneli kod (ilk istekte `otp_required` döner). |
| `device` | string | Cihaz adı; Ayarlar → Güvenlik'teki oturum listesinde görünür. |

## Yanıt

```json 200
{
  "app": {
    "accent": "#0f3a44",
    "accent_dark": "#0b2b33",
    "company": "Örnek Kimya",
    "currencies": [
      "EUR"
    ],
    "currency_base": "EUR",
    "currency_symbol": "€",
    "logo": "",
    "name": "Solk CRM",
    "opp_lifetime_days": 180,
    "site_url": "https://ornek.solk.app",
    "stage_sla": {
      "Expect to Close": 15,
      "Negotiation": 30,
      "Present Solution": 60,
      "Qualify": 30,
      "Viable": 60
    },
    "ticket_sla_hours": {
      "Acil": 4,
      "Düşük": 168,
      "Normal": 72,
      "Yüksek": 24
    },
    "unit_default": "kg",
    "units": [
      "kg"
    ],
    "version": "v22"
  },
  "license": {
    "blocked": false,
    "customer": "Örnek Kimya",
    "days_left": null,
    "end": null,
    "label": "Deneme modu",
    "modules": [
      "calendar"
    ],
    "no": null,
    "state": "trial"
  },
  "ok": true,
  "token": "xk_1dcb806508e33cee8d728d9baafc6eee23b6e2cb16da8afd",
  "user": {
    "email": "deniz@ornekkimya.com.tr",
    "full_name": "Deniz Aksoy",
    "id": 1,
    "modules": [
      "calendar"
    ],
    "role": "admin",
    "role_label": "Yönetici",
    "username": "admin"
  },
  "weak_password": true
}
```
