# Ajan Anahtarı ile Kimlik Doğrulama

> Ajan Anahtarı ile Kimlik Doğrulama, Evobulut ön muhasebe / ERP yazılımının Yapay Zeka Ajanları modülüne ait bir REST API servisidir. POST yöntemiyle `https://ws.evobulut.com/api/doviz/base/` adresine JSON gönderilerek çağrılır.

- **Modül:** Yapay Zeka Ajanları
- **Yöntem:** POST
- **Endpoint:** `https://ws.evobulut.com/api/doviz/base/`
- **Kimlik doğrulama:** `Authorization: Bearer` başlığında ajan anahtarı (Login ve UID gerekmez)
- **Son güncelleme:** 2026-10-09
- **Doküman:** https://dev.evobulut.com/servis/yapay-zeka-ajanlari/ajan-anahtari-ile-kimlik-dogrulama-329

## Açıklama

Yapay zeka ajanları (Claude vb.) ve sunucudan sunucuya entegrasyonlar evobulut servislerini kullanıcı kodu / şifre ile oturum açmadan,
**ajan anahtarı** ile çağırabilir. Ajan, anahtarın bağlı olduğu kullanıcının yetkileriyle çalışır ve o kullanıcının web veya mobil
oturumunu **kapatmaz**.

Anahtar nasıl alınır?

evobulut'ta firma yöneticisi: **Ayarlar › Büro Tanımları › Yapay Zeka Ajanları › Yeni Anahtar**. Anahtarın bağlanacağı kullanıcı,
geçerlilik süresi (30 / 90 / 365 gün) ve dakikalık istek sınırı seçilir. Anahtar **yalnız bir kez** gösterilir; kaybedilirse iptal edilip
yenisi üretilir. Aynı ekrandan anahtarın son kullanımı ve son 100 isteği izlenebilir.

**Anahtar yalnız aktif API kullanıcılarına verilir.** Ajan için Kullanıcı Tanımları'nda ayrı bir kullanıcı açıp
"Hesap API Kullanıcısı" olarak işaretleyin ve ona yalnız gereken yetkileri verin; ajanın yaptığı kayıtlar da böylece belgelerde
bu kullanıcının adıyla ayrı görünür. Pasif ya da API kullanıcısı olmayan hesaplara anahtar üretilemez.

Kullanım

Her isteğe `Authorization: Bearer <anahtar>` başlığı eklenir. **Login (euas) çağrılmaz, UID gönderilmez**
(gönderilirse yok sayılır). Bu dokümantasyondaki diğer tüm servisler aynı adres ve gövdeyle çağrılır; bu sayfadaki örnek döviz listesidir.

Kurallar

| Kullanıcı | Anahtar yalnız aktif bir API kullanıcısına bağlanabilir. Kullanıcı sonradan pasifleşir ya da API kullanıcılığı kaldırılırsa anahtar en geç 5 dakika içinde reddedilmeye başlar. |
| --- | --- |
| Yetki | Anahtarın bağlı olduğu kullanıcının yetkileri ve yetenek kısıtları aynen uygulanır. |
| Çalışma saatleri | Kullanıcıya çalışma saati tanımlıysa ajan da yalnız bu saatlerde işlem yapabilir. |
| İstek sınırı | Anahtar başına dakikalık sınır (varsayılan 60). Aşılırsa HTTP 429. |
| İptal / süre | İptal edilen ya da süresi dolan anahtar en geç 5 dakika içinde reddedilmeye başlar. |
| Kapsam | Anahtar bir firmaya bağlıdır; giriş, çıkış, token ve alt firma seçimi servisleri anahtarla çağrılamaz. |
| Kayıt | Anahtarla yapılan her istek zamanı, servisi, komutu ve IP adresiyle kaydedilir. |

Hata kodları

| HTTP | Anlamı |
| --- | --- |
| 401 | Anahtar geçersiz, iptal edilmiş ya da süresi dolmuş. |
| 403 | Kullanıcı ya da firma pasif, kullanıcı artık API kullanıcısı değil, kullanıcı çalışma saatleri dışında ya da istenen işlem ajan anahtarıyla yapılamaz (giriş/çıkış servisleri). |
| 429 | Anahtarın dakikalık istek sınırı aşıldı. Retry-After başlığındaki saniye kadar bekleyip tekrar deneyin. |
| 503 | Anahtar o an doğrulanamadı; kısa süre sonra tekrar deneyin. |

Hata gövdesi: `{"status":"ERR_000","veri":[{"mesaj":"Geçersiz ajan anahtarı."}]}`. Servislerin kendi iş kuralı hataları (eksik alan vb.) diğer servislerdeki gibi HTTP 200 + `status: ERR` ile döner.

## Header bilgileri

| Authorization | Bearer evo_ak_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| --- | --- |

## İstek gövdesi

```json
{
  "cmd": "doviz_listesi"
}
```

## Örnek istek (cURL)

```bash
curl -X POST "https://ws.evobulut.com/api/doviz/base/" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer evo_ak_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -d '{
  "cmd": "doviz_listesi"
}'
```

## Başarılı yanıt

```json
{
  "status": "OK",
  "veri": [
    {
      "ID": "0",
      "Kod": "₺",
      "Adi": "Türk Lirası",
      "KodAdi": "TL"
    },
    {
      "ID": "1",
      "Kod": "$",
      "Adi": "ABD Doları",
      "KodAdi": "USD"
    },
    {
      "ID": "2",
      "Kod": "€",
      "Adi": "Euro",
      "KodAdi": "EUR"
    }
  ]
}
```

