Metadata-Version: 2.4
Name: rafikisms-sdk
Version: 1.0.0
Summary: HTTP client for Rafiki SMS vendor API (X-API-Key)
Project-URL: Documentation, https://developers.rafikisms.com/
Project-URL: OpenAPI, https://developers.rafikisms.com/v1/docs/openapi.json
Project-URL: Source, https://github.com/nasrtechindustry/rafikisms-sdk/tree/main/sdk/python
License: MIT
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# Rafikisms Python SDK

HTTP client for the **Rafiki SMS** vendor API (`X-API-Key`), aligned with `sdk/js` and `sdk/php`.

Developer docs: <https://developers.rafikisms.com/>

OpenAPI JSON: <https://developers.rafikisms.com/v1/docs/openapi.json>

## Requirements

- Python 3.10+
- [httpx](https://www.python-httpx.org/)

## Install (local path)

From another project:

```bash
pip install -e ../path/to/rafikisms/sdk/python
```

Or add to `pyproject.toml`:

```toml
dependencies = [
  "rafikisms-sdk @ file:///${PROJECT_ROOT}/sdk/python",
]
```

## Usage

```python
import os
from rafikisms import Client

with Client("https://api.rafikisms.com", os.environ["RAFIKISMS_API_KEY"]) as c:
    r = c.get_balance()
    if r.success:
        print(r.data["credit_balance"])
```

### OTP

```python
otp = c.generate_otp({"phone_number": "255712345678", "sender_id": "MYBRAND"})
verified = c.verify_otp({
    "phone_number": "255712345678",
    "otp_code": "482916",
    "reference_id": otp.data["reference_id"],
})
```

### Strict errors

```python
from rafikisms import ApiError, Client

c = Client(base_url, api_key, throw_on_error=True)
try:
    c.send_sms({"phone": "255712345678", "message": "Hi"})
except ApiError as e:
    print(e.result.error_code, e.result.errors)
```

## API

| Method | HTTP |
|--------|------|
| `send_sms` | POST `/v1/vendor/send-sms` |
| `send_bulk_sms` | POST `/v1/vendor/send-bulk-sms` |
| `generate_otp` | POST `/v1/otp/generate` |
| `verify_otp` | POST `/v1/otp/verify` |
| `get_balance` | GET `/v1/vendor/balance` |
| `get_sms_logs` | GET `/v1/vendor/sms-logs` |
| `get_delivery_report` | GET `/v1/vendor/delivery-reports` |
| `get_sender_names` | GET `/v1/vendor/sender-names` |
| `request_sender_name` | POST `/v1/sender-names/request` |
| `update_delivery_webhook` | PUT `/v1/vendors/delivery-webhook` |

## Tests

```bash
cd sdk/python && pip install -e ".[dev]" && pytest -q
```

## License

MIT.
