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

# Kimlik doğrulama

> HTTP Basic, firma bağlamı, yetkiler ve IP kısıtı.

## HTTP Basic

Her istekte `Authorization` başlığı HTTP Basic biçiminde gönderilir: kullanıcı adı **anahtar kimliği**, parola **secret key** değeridir.

```http theme={null}
GET /v1/bank-accounts HTTP/1.1
Host: api.banka.pro
Authorization: Basic base64(<anahtar-kimliği>:<secret-key>)
```

Çoğu HTTP istemcisi bunu kendisi kurar (`curl -u`, Python `requests` için `auth=(...)`).

<Warning>
  Kimlik bilgilerini yalnız HTTPS üzerinden gönderin; kaynak koduna, istemci uygulamalarına veya loglara yazmayın.
</Warning>

Kimlik doğrulanamazsa yanıt `401 UNAUTHORIZED` olur ve `WWW-Authenticate` başlığı döner. Şu durumların hepsi bu sonucu verir:

* `Authorization` başlığı yok ya da Basic biçiminde değil
* Anahtar kimliği veya secret key yanlış
* Anahtar pasif ya da erişim bitiş tarihi geçmiş

## Firma bağlamı

Her anahtar oluşturulduğu firmaya bağlıdır ve yalnız o firmanın verisine erişir. Firma istekten okunmaz: `companies`, `companiesId`, `companyIds` veya `scope` adıyla bir başlık ya da sorgu parametresi gönderilirse istek `400 TENANT_SELECTOR_FORBIDDEN` ile reddedilir. Birden çok firmanız varsa her firma için ayrı anahtar oluşturun.

## Sunucudan sunucuya

API tarayıcıdan çağrılmak için tasarlanmamıştır. `Origin` başlığı taşıyan istekler `403 CORS_FORBIDDEN` ile reddedilir ve CORS izni verilmez. Mobil veya web istemciniz veriye ihtiyaç duyuyorsa isteği kendi sunucunuz üzerinden yapın.

## Yetkiler

Anahtar oluşturulurken seçilen yetkiler hangi uçların çağrılabileceğini belirler. Yetkisi olmayan bir uç `403 FORBIDDEN` döner.

| Yetki (panelde) | Kod | Açtığı uçlar |
| - | - | - |
| Hesaplar | `baAccounts` | Hesap listesi, hesap detayı, hesap özeti, bakiye geçmişi |
| Hareketler | `baTransactions` | Hareket listesi, hareket detayı, hareket özeti |
| İşlemler (durum, not) | `baOperations` | Durum güncelleme, toplu durum, not kaydetme ve silme |
| Banka sorgusu | `baSync` | Manuel banka sorgusu |
| Kişisel veriler (IBAN, TCKN/VKN) | `baPii` | Uç açmaz; diğer uçlarda karşı taraf verisini açık gösterir |

### Kişisel veriler (`baPii`)

`baPii` yoksa:

* Karşı tarafın IBAN'ı ilk ve son dört karakteri dışında, TCKN/VKN'si ilk üç ve son iki karakteri dışında maskelenir.
* Hareket açıklaması ve notu içindeki IBAN ve 10–11 haneli kimlik numarası eşleşmeleri de maskelenir.
* IBAN ve kimlik numarası üzerinde arama yapılamaz; böyle bir arama `403 FORBIDDEN` döner.

Firmanın **kendi** banka hesabının IBAN'ı `baAccounts` ile açık döner; `baPii` gerektirmez.

<Tip>
  Entegrasyonunuz karşı tarafın kimliğini eşleştirmiyorsa `baPii` vermeyin. Her anahtara yalnız ihtiyaç duyduğu yetkileri atayın.
</Tip>

## IP kısıtı

Anahtarın **IP kısıtı** alanı doluysa istek yalnız listedeki adreslerden kabul edilir; diğer adreslerden gelen istekler `403 API_IP_FORBIDDEN` döner. Alan boşsa her adresten erişilebilir. Bir anahtara en çok 20 IPv4 veya IPv6 adresi eklenebilir.

## Diğer 403 nedenleri

| Kod | Anlamı |
| - | - |
| `API_PRODUCT_FORBIDDEN` | Anahtarın BankaPro erişimi yok |
| `API_COMPANY_FORBIDDEN` | Anahtarın bağlı olduğu firmanın BankaPro erişimi yok veya etkin değil |

Bütün hata kodları için [Yanıtlar ve hatalar](/yanitlar-ve-hatalar#hata-kodları) sayfasına bakın.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.