Metadata-Version: 2.4
Name: arca-status
Version: 0.1.0
Summary: Check ARCA/AFIP (ex-AFIP) web-service health from Python or the CLI — no credentials needed (uses WSFEv1 FEDummy).
Author-email: FactuARCA <hola@factuarca.app>
License: MIT
Project-URL: Homepage, https://factuarca.app
Project-URL: Repository, https://github.com/puppetmaster886/arca-status
Project-URL: Issues, https://github.com/puppetmaster886/arca-status/issues
Keywords: arca,afip,wsfev1,fedummy,status,uptime,argentina,facturacion-electronica,healthcheck
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: System :: Monitoring
Classifier: Natural Language :: Spanish
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: zeep>=4.2
Requires-Dist: requests>=2.28
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: ruff>=0.5; extra == "dev"
Dynamic: license-file

# arca-status

**¿Están funcionando los web services de ARCA/AFIP? Averigualo desde Python o la terminal, sin certificados ni clave fiscal.**

[![PyPI](https://img.shields.io/pypi/v/arca-status.svg)](https://pypi.org/project/arca-status/)
[![CI](https://github.com/puppetmaster886/arca-status/actions/workflows/ci.yml/badge.svg)](https://github.com/puppetmaster886/arca-status/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

Cuando ARCA se cae, tu integración de facturación electrónica se cae con ella. `arca-status` consulta el método **`FEDummy`** de WSFEv1 — que devuelve la salud de los servidores de ARCA (**AppServer / DbServer / AuthServer**) **sin necesidad de ticket WSAA ni certificado** — para que sepas al instante si el problema es tuyo o de ellos.

> Parte del toolkit de **[FactuARCA](https://factuarca.app)**, el servicio que factura en ARCA automáticamente desde Zoho Books.

## Instalación

```bash
pip install arca-status
```

## CLI

```bash
$ arca-status
WSFEv1 [produccion]: OK  app=OK db=OK auth=OK (412 ms)

$ arca-status --env homologacion --wsaa
WSFEv1 [homologacion]: OK  app=OK db=OK auth=OK (388 ms)
WSAA   [homologacion]: ALCANZABLE (HTTP 200, 201 ms)

$ arca-status --json
{
  "wsfev1": {
    "env": "produccion", "reachable": true,
    "app_server": "OK", "db_server": "OK", "auth_server": "OK",
    "latency_ms": 412, "error": null, "service": "wsfev1", "ok": true
  }
}
```

El exit code es `0` si WSFEv1 está OK y `1` en caso contrario — útil en scripts y health checks.

## Uso como librería

```python
from arca_status import probe_wsfe, probe_all

s = probe_wsfe("produccion")
if not s.ok:
    print(f"ARCA con problemas: app={s.app_server} db={s.db_server} auth={s.auth_server}")

# Ambos servicios (WSFEv1 + reachability de WSAA) en un dict serializable:
probe_all("produccion")
```

`probe_wsfe()` **nunca levanta excepción**: ante un problema de red/TLS devuelve un `WsfeStatus` con `reachable=False` y el error en `.error`.

## Cómo funciona

`FEDummy` es un método público de WSFEv1 pensado justamente para monitoreo: no lleva la sección `Auth` (token/sign/cuit) que exigen el resto de las operaciones, así que no hace falta ni certificado ni delegación. `arca-status` también resuelve el detalle de que los servidores de ARCA usan claves DH cortas que el OpenSSL por defecto de Python 3.10+ rechaza (baja `SECLEVEL` a 1 solo para esos hosts).

| Servicio | Producción | Homologación |
|---|---|---|
| WSFEv1 (`FEDummy`) | `servicios1.afip.gov.ar` | `wswhomo.afip.gov.ar` |
| WSAA (reachability) | `wsaa.afip.gov.ar` | `wsaahomo.afip.gov.ar` |

## Desarrollo

```bash
pip install -e ".[dev]"
pytest
ruff check .
```

## Licencia

[MIT](LICENSE) © FactuARCA.

---

<p align="center">
  Hecho por <a href="https://factuarca.app"><b>FactuARCA</b></a> — facturá en ARCA automáticamente desde Zoho Books.
</p>
