Sobre el proyecto

Soenneker.Copper.OpenApiClientUtil es una biblioteca de .NET que entrega un cliente generado por Kiota, reutilizable y creado de forma perezosa para la API de Copper, construido sobre un proveedor HTTP de Copper configurado. Lo que hace - Expone una abstracción `ICopperOpenApiClientUtil` cuyo método `Get` inicializa el cliente una sola vez durante la vida útil de la utilidad; los llamadores concurrentes comparten esa inicialización y reciben la misma instancia del cliente. - Se sitúa por encima de un paquete HTTP de Copper que envía los encabezados que Copper requiere: `X-PW-AccessToken`, `X-PW-Application` y `X-PW-UserEmail`. - La configuración se lee de una sección `Copper` (por ejemplo, `ApiKey` y `Email` para el propietario del token), y el paquete subyacente también admite `Copper:ClientBaseUrl`, `Copper:Application`, `Copper:AuthHeaderName` y `Copper:AuthHeaderValueTemplate`. Instalación y registro Instale a través de `dotnet add package Soenneker.Copper.OpenApiClientUtil`. Se proporcionan dos registradores de DI: `AddCopperOpenApiClientUtilAsSingleton()` para un único cliente compartido, y `AddCopperOpenApiClientUtilAsScoped()` cuando cada ámbito de aplicación debe almacenar en caché su propio cliente generado mientras sigue compartiendo el proveedor HTTP singleton. Uso típico Una clase consumidora inyecta `ICopperOpenApiClientUtil`, espera `clientUtil.Get(cancellationToken)` y luego llama a los métodos de endpoint generados como `client.Account.GetAsync(...)`. Advertencias documentadas - La configuración se captura cuando se crea por primera vez el cliente HTTP subyacente, por lo que los cambios en las credenciales o en la URL base requieren recrear el ciclo de vida del servicio. - Al desechar una utilidad con ámbito (scoped), se libera su referencia al cliente generado sin eliminar el `HttpClient` compartido; el proveedor HTTP desecha ese cliente cuando el contenedor de la aplicación se cierra. - Algunos endpoints generados devuelven JSON como `string?` porque la colección de Postman de origen carece de un esquema de respuesta sólido. - La clave de API, el correo electrónico del propietario del token y los encabezados de autenticación de Copper deben redactarse en los registros y trazas. Alcance El repositorio es un envoltorio de cliente ligero, no una aplicación de CRM completa: proporciona la creación del cliente y la gestión del ciclo de vida, mientras que la cobertura de la API y las formas de respuesta están definidas por el cliente de Copper generado.