Metadata-Version: 2.4
Name: arplyx
Version: 0.1.0
Summary: SDK oficial de Arplyx: enviá mensajes y broadcasts de WhatsApp desde Python.
Author-email: Arplyx <info@arplyx.com>
License: MIT
Project-URL: Homepage, https://docs.arplyx.com/api/
Project-URL: Documentation, https://docs.arplyx.com/api/
Keywords: arplyx,whatsapp,whatsapp-api,sdk,mensajeria,broadcasts
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.25

# arplyx (Python SDK)

SDK oficial de **Arplyx** para Python: enviá mensajes y broadcasts de WhatsApp y consultá estados con una API tipada.

## Instalación

```bash
pip install arplyx
```

Requiere Python 3.8+.

## Uso

```python
from arplyx import Arplyx, ArplyxError

client = Arplyx(api_key="ak_live_...")

# Enviar un texto
msg = client.send_message(
    external_id="pedido-10045",
    to="+5491155551234",
    text="Tu pedido fue confirmado.",
    channel="whatsapp_direct",
    whatsapp_account_id="TU_ACCOUNT_ID",
)
print(msg.message_id, msg.status)

# Consultar estado (por message_id o por tu external_id)
status = client.get_message("pedido-10045")
print(status.status)  # pending | queued | sent | delivered | read | failed
```

### Plantillas (Meta Official)

```python
client.send_message(
    external_id="pedido-10045",
    to="+5491155551234",
    channel="whatsapp_meta",
    template={"name": "pedido_confirmado", "language": "es_AR", "body": ["Juan", "10045"]},
)
```

### Broadcast a una lista (planes Basic/Pro)

```python
client.send_broadcast(
    external_id="promo-junio-2026",
    list_id="TU_LIST_ID",
    text="Este mes 2x1 en turnos.",
    channel="whatsapp_direct",
    whatsapp_account_id="TU_ACCOUNT_ID",
)
```

### Listar cuentas de WhatsApp

```python
for acc in client.list_whatsapp_accounts():
    print(acc.id, acc.type, acc.status)  # acc.id se usa como whatsapp_account_id
```

## Manejo de errores

```python
try:
    client.send_message(external_id="x", to="+549...", text="hola")
except ArplyxError as e:
    print(e.status)   # 400, 401, 409, 422, 429, 500...
    print(e.code)     # 'validation_error', 'conflict', 'quota_exceeded'...
    print(e.details)  # detalles por campo si es validation_error
```

## Idempotencia

Todos los envíos usan tu `external_id` como clave de idempotencia: reintentar con el mismo `external_id` y payload no duplica el envío. Es seguro reintentar ante timeouts.

## Configuración

| Parámetro | Requerido | Default |
|---|---|---|
| `api_key` | Sí | — |
| `base_url` | No | `https://api.arplyx.com` |
| `timeout` | No | `10.0` |
| `session` | No | `requests.Session()` nueva |

Docs de la API: https://docs.arplyx.com/api/ · OpenAPI: https://api.arplyx.com/openapi.yaml
