Cliente já resolvido — o valor que todas as funções de serviço recebem como primeiro argumento.
Crie com ApiBrasil.new/1 (ou ApiBrasil.from_env/0) em vez de montar a
struct à mão: new/1 resolve o ambiente, aplica os padrões e normaliza os
headers.
client = ApiBrasil.new(bearer_token: "jwt", device_token: "device")
{:ok, envelope} =
ApiBrasil.Messaging.WhatsApp.send_text(client, %{
"number" => "5511999999999",
"text" => "Olá! 👋"
})Por ser um valor imutável, trocar credenciais devolve um novo cliente:
outro = ApiBrasil.put_device_token(client, "outro_device")
Summary
Types
@type t() :: %ApiBrasil.Client{ base_url: String.t(), bearer_token: String.t() | nil, device_token: String.t() | nil, headers: %{required(String.t()) => String.t()}, hooks: ApiBrasil.Core.Hooks.t(), options: keyword(), retry: ApiBrasil.Core.Retry.t(), secret_key: String.t() | nil, timeout: non_neg_integer(), transport: ApiBrasil.Core.Transport.t() }