Metadata-Version: 2.4
Name: ruraldte
Version: 0.1.0
Summary: SDK Python del API v1 de RuralDTE — emisión de DTE ante el SII de Chile (emitir = encolar), folios/CAF, webhooks y API keys.
Project-URL: Homepage, https://ruraldte.cl
Project-URL: Documentation, https://ruraldte.cl/docs
License-Expression: MIT
License-File: LICENSE
Keywords: boleta-electronica,chile,dte,factura-electronica,facturacion,sii
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business :: Financial
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# ruraldte (Python)

SDK Python del API v1 de [RuralDTE](https://ruraldte.cl) — emisión de documentos
tributarios electrónicos (DTE) ante el SII de Chile. Cero dependencias (solo stdlib).

## Instalación

```bash
pip install ruraldte
```

> Cobertura actual (MVP): `documents.emit`, `documents.list`, `documents.states`,
> folios, emisores, webhooks y keys. El SDK TypeScript
> ([`@ruraldte/sdk`](https://www.npmjs.com/package/@ruraldte/sdk)) cubre además
> pagos, cesiones, conectores, intercambio, reportes y más — la API REST los
> soporta todos aunque este SDK aún no.

```python
import os
from ruraldte import RuralDte, RuralDteError

rd = RuralDte(api_key=os.environ["RURALDTE_API_KEY"])

# Emitir = encolar (202 { "status": "queued" }). El SII confirma asíncrono.
try:
    doc = rd.documents.emit({
        "emisorId": "…",
        "tipo": 33,                 # factura electrónica
        "ambiente": "cert",
        "receptor": {"rut": "11111111-1", "razonSocial": "ACME SpA"},
        "montos": {"total": 1190, "neto": 1000, "iva": 190},  # CLP enteros
    }, idempotency_key="orden-123")
    print(doc["id"], doc["status"])

    # Pollear el desenlace (o suscribir un webhook a dte.aceptado/dte.rechazado).
    print(rd.documents.states(doc["id"]))
except RuralDteError as e:
    print(e.status, e.code, e.detail, "retryable:", e.is_retryable)
```

Recursos: `documents` (emit/list/states), `folios` (stock/request),
`emisores` (list/create/upload_credential), `webhooks` (list/register/disable),
`keys` (list/create/revoke).

Config: `RuralDte(api_key, base_url=…, timeout=30)`. La key fija el ambiente
permitido (`rdte_test_*` → test/cert, `rdte_live_*` → prod).

Docs y OpenAPI: <https://ruraldte.cl/docs>

Tests: `python3 -m unittest discover -s tests -t .`

MIT © Comunidad Rural SpA
