Sobre o projeto

Soenneker.Copper.OpenApiClientUtil é uma biblioteca .NET que fornece um cliente gerado pelo Kiota, reutilizável e criado de forma preguiçosa para a API do Copper, construído sobre um provedor HTTP do Copper configurado. O que ele faz - Expõe uma abstração `ICopperOpenApiClientUtil` cujo método `Get` inicializa o cliente uma única vez durante a vida útil do utilitário; chamadores concorrentes compartilham essa inicialização e recebem a mesma instância do cliente. - Posiciona-se acima de um pacote HTTP do Copper que envia os cabeçalhos exigidos pelo Copper: `X-PW-AccessToken`, `X-PW-Application` e `X-PW-UserEmail`. - A configuração é lida de uma seção `Copper` (por exemplo, `ApiKey` e `Email` para o proprietário do token), e o pacote subjacente também suporta `Copper:ClientBaseUrl`, `Copper:Application`, `Copper:AuthHeaderName` e `Copper:AuthHeaderValueTemplate`. Instalação e registro Instale via `dotnet add package Soenneker.Copper.OpenApiClientUtil`. Dois registradores de DI são fornecidos: `AddCopperOpenApiClientUtilAsSingleton()` para um único cliente compartilhado, e `AddCopperOpenApiClientUtilAsScoped()` quando cada escopo da aplicação deve fazer o cache de seu próprio cliente gerado, enquanto ainda compartilha o provedor HTTP singleton. Uso típico Uma classe consumidora injeta `ICopperOpenApiClientUtil`, aguarda `clientUtil.Get(cancellationToken)` e então chama métodos de endpoint gerados, como `client.Account.GetAsync(...)`. Ressalvas documentadas - A configuração é capturada quando o cliente HTTP subjacente é criado pela primeira vez, portanto, alterações de credenciais ou de URL base exigem a recriação do tempo de vida do serviço. - A liberação de um utilitário com escopo (scoped) libera sua referência ao cliente gerado sem remover o `HttpClient` compartilhado; o provedor HTTP libera esse cliente quando o container da aplicação é encerrado. - Alguns endpoints gerados retornam JSON como `string?` porque a coleção Postman de origem carece de um esquema de resposta forte. - A chave de API, o e-mail do proprietário do token e os cabeçalhos de autenticação do Copper devem ser omitidos de logs e rastreamentos. Escopo O repositório é um wrapper de cliente leve, não uma aplicação de CRM completa: ele fornece a criação do cliente e o gerenciamento de tempo de vida, enquanto a cobertura da API e as formas de resposta são definidas pelo cliente Copper gerado.