Metadata-Version: 2.4
Name: posthubify
Version: 0.1.0
Summary: PostHubify resmî Python SDK'sı — sosyal medya yayını, gelen kutusu, kişiler, reklam ve telekom (SMS/OTP) API'si.
Author: PostHubify
License: MIT
Project-URL: Homepage, https://posthubify.com
Project-URL: Documentation, https://docs.posthubify.com
Keywords: posthubify,social-media,api,sdk,ads,sms,otp
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"

# PostHubify Python SDK

PostHubify `/v1` API'sinin resmî Python istemcisi — sosyal medya yayını, gelen kutusu,
kişiler, analitik, reklam (ads) ve telekom (SMS/OTP) için tek paket.

- **Sıfır runtime bağımlılığı** — yalnızca Python standart kütüphanesi (`urllib`).
- **Tam yüzey** — `/v1` spec'inin 190+ operasyonu birebir kapsanır (kontrat testiyle doğrulanır).
- Python 3.8+

## Kurulum

```bash
pip install posthubify
```

## Hızlı başlangıç

```python
from posthubify import Posthubify, PosthubifyError

ph = Posthubify(api_key="sk_...", base_url="https://api.posthubify.com/v1")

# Bağlantı testi
print(ph.ping())  # {"pong": True, "version": "v1", ...}

# Gönderi yayınla
draft = ph.posts.create({
    "content": "Merhaba dünya!",
    "accountIds": ["acc_123"],
})

# Gelen kutusu analitiği
vol = ph.inbox_analytics.volume(from_date="2026-06-01", to_date="2026-06-14")
print(vol["summary"])  # {"received": ..., "sent": ..., ...}

# Reklam kampanyası
camps = ph.ads.campaigns("adacc_1", status="enabled")

# Hata yönetimi
try:
    ph.posts.get("yok")
except PosthubifyError as e:
    print(e.status, e.message, e.code)  # 404 "..." "..."
```

## Resource grupları

İstemci, Node SDK'sıyla birebir aynı yüzeyi snake_case niteliklerle sunar:

`profiles` · `accounts` · `posts` · `media` · `tools` · `ads` · `insights` ·
`platform_analytics` · `inbox_analytics` · `inbox` · `comments` · `reviews` ·
`contacts` · `automations` · `broadcasts` · `sequences` · `webhooks` · `api_keys` ·
`queue` (`.schedules`) · `account_groups` · `engagement` (`.x`) · `users` ·
`invite_tokens` · `numbers` · `senders` · `sms` · `otp`

Üst seviye: `ph.openapi()`, `ph.ping()`, `ph.me()`, `ph.analytics()`,
`ph.analytics_posts()`, `ph.analytics_timeseries()`, `ph.logs()`, `ph.usage()`.

## Medya yükleme

```python
with open("logo.png", "rb") as f:
    asset = ph.media.upload(f.read(), filename="logo.png")
print(asset["url"])
```

## Geliştirme

```bash
cd packages/python-sdk
python3 -m unittest discover -s tests        # kontrat + transport testleri
```

Kontrat testi (`tests/test_contract.py`) her SDK metodunun ürettiği uç yolunun
OpenAPI spec'inde (`tests/openapi.json`) tanımlı olduğunu doğrular. Spec fixture'ı
yeni uç eklendiğinde güncellemek için repo kökünden:

```bash
npx tsx -e "import {buildOpenApiSpec} from './apps/server/src/openapi.ts'; \
  import {writeFileSync} from 'node:fs'; \
  writeFileSync('packages/python-sdk/tests/openapi.json', JSON.stringify(buildOpenApiSpec(),null,2))"
```

## Lisans

MIT
