Documentación
Descripción de endpoints SOAP, variables de entorno, códigos de estado y ejemplos de uso.
SOAP Endpoints
| Endpoint | URL | Auth |
|---|---|---|
| Autenticacion | /Autenticacion/Autenticacion.svc |
WS-Security (FIEL) |
| SolicitaDescarga | /SolicitaDescargaService.svc |
Bearer token |
| VerificaSolicitud | /VerificaSolicitudDescargaService.svc |
Bearer token |
| DescargaMasiva | /DescargaMasivaService.svc |
Bearer token |
Workflow
- Autenticacion — POST с FIEL (WS-Security) → получаем токен (живёт 5 мин)
- SolicitaDescarga — POST с фильтрами →
idSolicitud - VerificaSolicitud — опрос статуса →
EstadoSolicitud+idsPaquetes - DescargaMasiva — скачать пакет (ZIP base64) по
idPaquete(макс. 2 раза)
EstadoSolicitud
1 | Aceptada |
2 | En proceso |
3 | Terminada |
4 | Error |
5 | Rechazada |
6 | Vencida |
Environment variables
| Variable | Default | Description |
|---|---|---|
FIEL_VALIDATION_MODE | lenient | lenient | strict |
DEFAULT_PROCESSING_DELAY_SECONDS | 5 | Delay before request completes |
ADMIN_PASSWORD | admin | Admin UI password |
SAT_API_VERSION | v1.5 | legacy | v1.5 (default on startup) |
CLOUDPUB_TOKEN | — | Cloudpub tunnel token |
Python example (zeep)
from zeep import Client
from zeep.transports import Transport
BASE = "http://localhost:3335"
# 1. Autenticacion
auth_client = Client(f"{BASE}/Autenticacion/Autenticacion.svc?wsdl")
token = auth_client.service.Autentica() # returns raw token string in v1.5
# 2. SolicitaDescarga
solicita_client = Client(f"{BASE}/SolicitaDescargaService.svc?wsdl")
result = solicita_client.service.SolicitaDescargaMasivaTercerosCFDI(
peticionDescarga={...},
_soapheaders={"Authorization": token}
)
id_solicitud = result.IdSolicitud
# 3. VerificaSolicitud (poll until EstadoSolicitud == 3)
verifica_client = Client(f"{BASE}/VerificaSolicitudDescargaService.svc?wsdl")
# 4. DescargaMasiva
descarga_client = Client(f"{BASE}/DescargaMasivaService.svc?wsdl")
pkg = descarga_client.service.PeticionDescargaMasivaTercerosCFDI(...)
zip_bytes = base64.b64decode(pkg.Paquete)