Sign inSign up

cormaza/ats-validator

By cormaza

•Updated 13 days ago

Image
0

47

cormaza/ats-validator repository overview

⁠ats-validator · Validador DIMM del Anexo Transaccional (ATS) como servicio

Imagen pública: cormaza/ats-validator:1.3.0 (y latest).

Servicio HTTP independiente que expone el motor oficial de validación del Anexo Transaccional del SRI (plugin DIMM ats.plugin.1.19.0, vigencia 09/2026) para que cualquier plataforma lo consuma sin instalar Eclipse: la app principal lo llama, él valida y devuelve errores + talón resumen. Desarrollo independiente, versionado aparte, mismo contrato para todos los consumidores (hoy: ERPNext l10n_ec, reporte SRI ATS).

⁠Servicios expuestos

MétodoEndpointAuthQué hace
GET/healthnoLiveness: {"status":"up"} (healthcheck del contenedor).
GET/versionsí¹Identidad para staleness: servicio, plugin SRI (zip + fecha), fecha de libs y versiones live de los 5 bundles.
POST/validateXmlsí¹Valida un ATS: esquema XSD + duplicados + reglas fiscales.

¹ Cuando ATS_VALIDATOR_TOKEN está seteado, todo (salvo nada) exige header X-Validator-Token. Sin token, el servicio debe bindearse a localhost o red interna (ver despliegue).

⁠POST /validateXml

Form param xml_file con el XML del ATS como texto (máx. 20 MB).

Respuesta 200:

{
  "talon_resumen": "<!DOCTYPE html>… (talón DIMM con CSS y logo incrustados)",
  "messages": ["…errores y advertencias…"],
  "has_errors": false,
  "has_warning": false
}
  • El talon_resumen es HTML autocontenido (CSS oficial + logo inline): se renderiza tal cual en un iframe sin dependencias externas.
  • Límite de 1000 mensajes (con aviso de truncado).
  • Cualquier fallo interno responde 500 + JSON de error — nunca un 200 vacío (un crash jamás debe leerse como "válido").
⁠GET /version
{
  "service": "1.3.0",
  "sriPluginZip": "ats.plugin.1.19.0",
  "sriPluginDate": "2026-09-07",
  "sriLibsDate": "2026-09-07",
  "bundles": {
    "ec.gob.sri.dimm.ats.validacion": "1.2.0",
    "ec.gob.sri.dimm.ats.ui": "1.2.0",
    "ec.gob.sri.dimm.ats.modelo": "1.2.0",
    "ec.gob.sri.dimm.api": "1.9.3",
    "ec.gob.sri.dimm.data": "1.23.0"
  }
}

Contrato "estoy desactualizado": el consumidor guarda los valores esperados (sriPluginZip + sriLibsDate) y los compara en cada uso. Diferencia —o ausencia— = validador desactualizado: se advierte en UI y se registra en el recibo, pero nunca se finge validez.

⁠Despliegue

# 1. Token compartido con la app consumidora
export ATS_VALIDATOR_TOKEN=$(openssl rand -hex 32)

# 2. Levantar (imagen pública, sin compilar nada)
docker compose up -d

El docker-compose.yml de este repo usa la imagen pública con red dedicada y healthcheck; el puerto no se publica (consumo por red interna). Si la app corre en el host (bench/bench serve), publicalo solo en loopback:

ports:
  - "127.0.0.1:8080:8080"

Y en producción exponelo detrás de un reverse-proxy con TLS, siempre con ATS_VALIDATOR_TOKEN seteado en ambos lados. Sin token, asumí red confiable (localhost o VPC) — la API no tiene otro control de acceso.

⁠Actualizar ante nueva ficha del SRI
  1. Se vendean los jars nuevos en ats_validator_rest y se publica imagen con nuevo tag (el sriPluginZip/sriLibsDate cambian).
  2. Se actualiza el tag en el compose y se redeploya.
  3. Los consumidores detectan el cambio vía /version y dejan de mostrar el aviso en cuanto coinciden con lo esperado.

⁠Licencia / redistribución

Los ats_libs/*.jar son del Servicio de Rentas Internas del Ecuador y viajan solo dentro de la imagen construida, no como fuente versionada aquí (el target/*.jar está ignorado). Revisá los términos del SRI antes de redistribuir la imagen fuera de tu organización.

Tag summary

Content type

Image

Digest

sha256:6408d75d5…

Size

138.1 MB

Last updated

13 days ago

docker pull cormaza/ats-validator