Egeek.Sifen 0.5.0 ya está disponible. Esta versión separa la superficie HTTP reusable del ejecutable de referencia para que cada equipo pueda integrar SIFEN en su propio host ASP.NET Core, conservar su Program.cs y aplicar el esquema de seguridad que corresponda a su entorno.

El cambio resuelve una limitación concreta: hasta ahora, reutilizar exactamente los mismos endpoints, contratos y reglas de serialización de la WebApi requería modificar el ejecutable o copiar parte de su implementación. El nuevo paquete Egeek.Sifen.WebApi.Hosting permite actualizar esa superficie mediante NuGet sin mantener un fork.

Un paquete HTTP reusable

La nueva composición pública se apoya en dos extensiones:

  • AddEgeekSifenWebApi registra el core stateless, la configuración monoemisor, los controllers, la serialización simbólica y los health checks.
  • MapEgeekSifenWebApi publica las rutas funcionales y devuelve IEndpointConventionBuilder, de modo que el consumidor puede aplicar sus propias policies y convenciones.

Hosting también expone los contratos HTTP, los filtros OpenAPI de eventos y helpers para liveness y readiness. No registra esquemas de autenticación, no selecciona una fallback policy y no publica Swagger por cuenta propia: esas decisiones pertenecen al host consumidor.

Seguridad componible y modos explícitos

El ejecutable de referencia incorpora los modos Anonimo, Integrada y Externa. Su guard valida la configuración antes de abrir endpoints y rechaza esquemas inexistentes o declaraciones contradictorias.

En modo Integrada, los endpoints funcionales y OpenAPI quedan protegidos por la autenticación configurada. En modo Externa, el proceso exige declarar de forma explícita que la protección se aplica en un gateway, reverse proxy, VPN, mTLS entrante o mecanismo equivalente. Los endpoints de health permanecen anónimos por decisión explícita.

El certificado cliente utilizado para la conexión saliente con SIFEN no autentica a quienes consumen la WebApi. Esa frontera continúa siendo responsabilidad de cada implementación.

Instalación

El feed NuGet público se agrega una sola vez:

dotnet nuget add source "https://gitlab.egeek.cloud/api/v4/projects/6/packages/nuget/index.json" --name egeek-sifen

Para consumir el core como librería:

dotnet add package Egeek.Sifen.Infrastructure --version 0.5.0

Para construir un host HTTP propio:

dotnet add package Egeek.Sifen.WebApi.Hosting --version 0.5.0

Hosting, Application e Infrastructure deben usar el mismo identificador exacto de versión. Los namespaces Egeek.Sifen.WebApi.* se conservan, pero los tipos reutilizables ahora viven en Egeek.Sifen.WebApi.Hosting.dll; los consumidores anteriores deben añadir la referencia y recompilar.

Qué verificamos

  • El candidato 0.5.0-rc.1 fue instalado y validado antes de publicar la estable.
  • 501 pruebas automatizadas fueron aprobadas; 17 integraciones reales opt-in permanecieron omitidas en la suite normal.
  • El build finalizó sin advertencias, con restore bloqueado, auditoría de dependencias y detección de secretos.
  • PackageSmoke, HostingPackageSmoke autenticado y WebApiSmoke fueron aprobados.
  • Los cinco paquetes 0.5.0 se restauraron desde el registry público, sin credenciales y con caché nueva.
  • El consumidor autenticado comprobó respuestas 401, 403 y acceso autorizado sobre las rutas funcionales y OpenAPI.
  • Los artefactos incluyen SBOM CycloneDX para Core, Hosting y WebApi, además de SHA256SUMS verificado antes de publicar.

Alcance y límites

Esta versión reorganiza el hosting HTTP, pero no cambia las reglas fiscales, los XSD, los catálogos ni los flujos SIFEN ya aceptados. Tampoco incorpora persistencia fiscal, polling, scheduler o reintentos automáticos. La validación de la release no constituye una nueva aceptación ante DNIT.

Egeek.Sifen es un proyecto open source independiente y no es un producto oficial de la Dirección Nacional de Ingresos Tributarios. Cada implementación debe realizar su propia revisión fiscal, jurídica, operativa y de seguridad.

Recursos

Por Miguel