Metadata-Version: 2.4
Name: ajaxapi
Version: 2.0.0
Summary: Ajax API (api.ajax.ink) Python istemcisi — API anahtarı ile ücretli sorgu
Author: Ajax Systems
License: MIT
Project-URL: Homepage, https://ajax.ink
Project-URL: Documentation, https://ajax.ink/docs.php
Project-URL: API, https://api.ajax.ink
Keywords: ajax,api,tc,gsm,tapu,sorgu,ajax.ink
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: License :: OSI Approved :: MIT License
Classifier: Typing :: Typed
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# ajaxapi (Python SDK) v2

[![PyPI](https://img.shields.io/pypi/v/ajaxapi.svg)](https://pypi.org/project/ajaxapi/)

**Yeni Ajax API** (`https://api.ajax.ink`) için Python istemcisi. Sorgular
için API anahtarı ve aktif abonelik gerekir. Paket ve dokümantasyon:
**https://ajax.ink**

> v2.0.0 büyük sürümdür: eski ücretsiz/key'siz `apiv2.ajaxsystems.fun`
> adresi kapatılmıştır. Yeni taban adres `https://api.ajax.ink`, kimlik
> doğrulama `ak_...` API anahtarıdır.

## Kurulum

```bash
pip install ajaxapi
```

Python 3.8+ desteklenir; ek bağımlılık yoktur.

## Hızlı başlangıç

```python
from ajaxapi import AjaxAPI

api = AjaxAPI(api_key="ak_xxxxxxxxxxxxxxxx")
sonuc = api.tc("17420629810")

print(sonuc.raw())   # tam JSON
print(sonuc.data)    # yanıttaki "data" alanı
```

API anahtarı ortam değişkeninden de okunur:

```bash
export AJAXAPI_KEY="ak_xxxxxxxxxxxxxxxx"
```

```python
from ajaxapi import AjaxAPI
api = AjaxAPI()
```

API anahtarınızı panelden oluşturabilirsiniz: **https://ajax.ink/keys.php**

## Modül fonksiyonları (eski sürüm uyumlu)

Eski sürümdeki fonksiyon adları korunmuştur:

```python
import ajaxapi

ajaxapi.set_api_key("ak_xxxxxxxxxxxxxxxx")

sonuc = ajaxapi.tc("17420629810")
sonuc = ajaxapi.ad_soyad("MEHMET", "YILMAZ")
sonuc = ajaxapi.aile("17420629810")
sonuc = ajaxapi.aile_pro("17420629810")
sonuc = ajaxapi.tc_gsm("17420629810")
sonuc = ajaxapi.gsm_tc("5550000000")
sonuc = ajaxapi.tapu("17420629810")
sonuc = ajaxapi.adres("17420629810")
sonuc = ajaxapi.ada_parsel("İSTANBUL", "KADIKÖY")
sonuc = ajaxapi.isyeri("17420629810")
sonuc = ajaxapi.eokul("17420629810")
```

Her fonksiyon `AjaxResult` döndürür. `raw()` tam JSON'u, `data`
yanıttaki `data` alanını verir.

## İstemci sınıfı

```python
from ajaxapi import AjaxAPI

api = AjaxAPI(
    api_key="ak_xxxxxxxxxxxxxxxx",
    timeout=30,          # saniye
    retries=3,           # 429 / 5xx / bağlantı hatalarında
    cache_enabled=False, # kişisel veri için varsayılan kapalı
)

sonuc = api.query("tc", tc="17420629810")
print(sonuc.data)
```

`base_url` varsayılanı `https://api.ajax.ink`'dir. Alternatif olarak
`https://ajax.ink/api.php` de kullanılabilir.

## Endpoint'ler

| Fonksiyon | Endpoint | Parametreler |
|---|---|---|
| `tc()` | `tc` | `tc_no` |
| `tc_pro()` | `tcpro` | `tc_no` |
| `ad_soyad()` | `adsoyad` | `ad`, `soyad`, `il?`, `ilce?` |
| `aile()` | `aile` | `tc_no` |
| `aile_pro()` | `aile` | `tc_no` |
| `sulale()` | `sulale` | `tc_no` |
| `tc_gsm()` | `tcgsm` | `tc_no` |
| `gsm_tc()` | `gsmtc` | `gsm_no` |
| `eokul()` | `eokul` | `tc_no` |
| `adres()` | `adres` | `tc_no` |
| `tapu()` | `tapu` | `tc_no` |
| `ada_parsel()` | `adaparsel` | `il`, `ilce`, `mahalle?`, `ada?`, `parsel?` |
| `isyeri()` | `isyeri` | `tc_no` |

## Hata yönetimi

```python
from ajaxapi import AjaxAPI, AjaxApiAuthError, AjaxApiError

api = AjaxAPI(api_key="ak_xxxxxxxxxxxxxxxx")
try:
    sonuc = api.tc("17420629810")
except AjaxApiAuthError as exc:
    print("Anahtar/abonelik hatası:", exc.error)
    print("Paket:", exc.purchase_url)
except AjaxApiError as exc:
    print("API hatası:", exc)
```

Önemli istisnalar:

- `AjaxApiAuthError` — 401/403 (anahtar yok/pasif veya abonelik yok)
- `AjaxApiValidationError` — 400/422 (geçersiz parametre)
- `AjaxApiRateLimitError` — 429
- `AjaxApiServerError` — 5xx
- `AjaxApiTimeoutError`, `AjaxApiConnectionError` — ağ hataları

Abonelik yoksa hata mesajında ve `purchase_url` alanında
**https://ajax.ink** adresi bulunur.

## Toplu sorgu

```python
sonuclar = api.batch_tc(["17420629810", "11111111110"])
for kayit in sonuclar:
    print(kayit["tc"], kayit["durum"])
```

## Komut satırı

```bash
ajaxapi --key ak_xxxxxxxxxxxxxxxx tc 17420629810
ajaxapi --key ak_xxxxxxxxxxxxxxxx adsoyad ROKET ATAR
ajaxapi --key ak_xxxxxxxxxxxxxxxx adaparsel İSTANBUL KADIKÖY
ajaxapi --key ak_xxxxxxxxxxxxxxxx query tc --param tc=17420629810
```

Anahtar `AJAXAPI_KEY` ortam değişkeninden de alınır:

```bash
export AJAXAPI_KEY="ak_xxxxxxxxxxxxxxxx"
ajaxapi tc 17420629810
```

## v1'den geçiş

- Taban adres `https://apiv2.ajaxsystems.fun` → `https://api.ajax.ink`
- API anahtarı zorunlu: `AjaxAPI(api_key="ak_...")` veya `set_api_key("ak_...")`
- `aile_pro()` artık yeni API'deki `aile` ucunu kullanır
- Önbellek varsayılan olarak **kapalı**
- `requests`/`httpx` bağımlılığı yok; sadece standart kütüphane

## Lisans

MIT © 2026 Ajax Systems
