Metadata-Version: 2.4
Name: django-mimsms
Version: 0.1.0
Summary: Production-ready Django & Python package for MiMSMS.com bulk SMS API. Features async support, type safety, and seamless Bangladesh SMS gateway integration.
Author: Mimsms Integration Team
Project-URL: Homepage, https://github.com/sharf-shawon/django-mimsms
Project-URL: Bug Tracker, https://github.com/sharf-shawon/django-mimsms/issues
Project-URL: Documentation, https://github.com/sharf-shawon/django-mimsms#readme
Project-URL: Repository, https://github.com/sharf-shawon/django-mimsms
Keywords: django-mimsms,mimsms sms api,django sms integration,bulk sms bangladesh,mimsms.com python,dynamic sms api,sms gateway django
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.0
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Requires-Dist: django>=5.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic>=2.6.0
Requires-Dist: rich>=15.0.0
Provides-Extra: test
Requires-Dist: pytest>=8.0.0; extra == "test"
Requires-Dist: pytest-django>=4.8.0; extra == "test"
Requires-Dist: pytest-cov>=4.1.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
Requires-Dist: respx>=0.20.0; extra == "test"
Provides-Extra: dev
Requires-Dist: ruff>=0.3.0; extra == "dev"
Requires-Dist: mypy>=1.9.0; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: rich>=13.0.0; extra == "dev"
Requires-Dist: django-mimsms[test]; extra == "dev"
Requires-Dist: python-semantic-release>=9.0.0; extra == "dev"

# django-mimsms: MiMSMS SMS API Integration for Django & Python

[![PyPI version](https://img.shields.io/pypi/v/django-mimsms.svg)](https://pypi.org/project/django-mimsms/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![CI Status](https://github.com/mimsms/django-mimsms/actions/workflows/ci.yml/badge.svg)](https://github.com/mimsms/django-mimsms/actions)

Seamlessly integrate **MiMSMS.com SMS API** into your Django and Python applications. This package provides a robust, type-safe, and asynchronous client for sending SMS, bulk messages, and tracking delivery reports in Bangladesh.

## Key Features

- **Strict Type Safety**: Fully typed with `mypy` strict checks and Pydantic v2 validation.
- **Async Support**: Efficient non-blocking I/O using `httpx`.
- **Django Integration**: Configuration via standard Django settings.
- **100% Test Coverage**: Comprehensive test suite with deterministic network isolation (`respx`).
- **Multiple API Support**: Single SMS, Bulk SMS (One-to-Many), and Dynamic SMS (DSMS).

## Installation

Install the package via `pip` or `uv`:

```bash
# Using pip
pip install django-mimsms

# Using uv
uv add django-mimsms
```

## Django Integration

### 1. Add to `INSTALLED_APPS`

```python
# settings.py
INSTALLED_APPS = [
    ...,
    "django_mimsms",
]
```

### 2. Configure Settings

Add your MiMSMS credentials to your `settings.py`:

```python
# settings.py
MIMSMS_API_KEY = "your_api_key"
MIMSMS_SENDER_ID = "your_sender_id"
MIMSMS_USERNAME = "your_username"
```

### 3. Usage

```python
from django_mimsms import send_sms

# Send a simple SMS
response = send_sms(
    to="88017XXXXXXXX",
    message="Hello from Django!",
)

print(response.trxnId)
```

## Plain Python Usage

If you're not using Django, you can use the `MiMSMSClient` directly:

```python
import asyncio
from django_mimsms import MiMSMSClient

async def main():
    client = MiMSMSClient(
        api_key="your_api_key",
        username="your_username",
        sender_id="your_sender_id"
    )
    
    response = await client.send_sms(
        to="88017XXXXXXXX",
        message="Hello from Python!",
    )
    print(response.trxnId)

if __name__ == "__main__":
    asyncio.run(main())
```

## Advanced Features

### Bulk SMS
Send the same message to multiple recipients:

```python
from django_mimsms import send_bulk_sms

send_bulk_sms(
    numbers=["88017XXXXXXXX", "88018XXXXXXXX"],
    message="Bulk message testing",
)
```

### Dynamic SMS
Send different messages to different recipients in one call:

```python
from django_mimsms import send_dynamic_sms

messages = [
    {"to": "88017XXXXXXXX", "message": "Hi Alice!"},
    {"to": "88018XXXXXXXX", "message": "Hi Bob!"},
]

send_dynamic_sms(messages)
```

## License

MIT
