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:
AddEgeekSifenWebApiregistra el core stateless, la configuración monoemisor, los controllers, la serialización simbólica y los health checks.MapEgeekSifenWebApipublica las rutas funcionales y devuelveIEndpointConventionBuilder, 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.1fue 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.0se 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
SHA256SUMSverificado 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
- Release pública Egeek.Sifen 0.5.0
- Paquetes NuGet publicados
- Guía de migración 0.4.1 → 0.5.0
- Componer un host con WebApi.Hosting
- Changelog completo