ApiBrasil.Platform.Auth (APIBrasil v0.0.1)

Copy Markdown View Source

Autenticação e conta (/auth/*, /profile*, /password/*).

O cliente da SDK é imutável, então nenhuma rota guarda o Bearer Token sozinha: login/3, verify_2fa/3 e refresh/2 devolvem a sessão retornada pela plataforma e cabe a você aplicar o token com authenticate/2 — ou usar ApiBrasil.login/2, que já devolve o cliente autenticado.

alias ApiBrasil.Platform.Auth

{:ok, sessao} =
  Auth.login(client, %{"email" => "voce@empresa.com.br", "password" => "******"})

client =
  if Auth.requires_2fa?(sessao) do
    desafio = sessao["challenge"]

    {:ok, _} = Auth.send_2fa(client, %{"challenge" => desafio, "method" => "email"})

    {:ok, sessao} =
      Auth.verify_2fa(client, %{"challenge" => desafio, "code" => "000000"})

    Auth.authenticate(client, sessao)
  else
    Auth.authenticate(client, sessao)
  end

Summary

Functions

Devolve um novo cliente com o Bearer Token da sessão aplicado.

Troca a senha com a sessão ativa: POST /password/change.

Como change_password/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Lê o Bearer Token de uma resposta de autenticação.

Autentica com email/senha: POST /auth/login.

Como login/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Encerra a sessão: POST /auth/logout.

Como logout/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Perfil atual: GET /profile/me.

Como me/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Inicia a recuperação de senha: POST /auth/password/forgot.

Como password_forgot/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Reenvia o código de recuperação: POST /auth/password/resend.

Como password_resend/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Redefine a senha: POST /auth/password/reset.

Como password_reset/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Valida o código de recuperação: POST /auth/password/verify-code.

Como password_verify_code/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Perfil completo, com estatísticas: POST /profile.

Como profile/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Renova o JWT: POST /refresh.

Como refresh/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Cria uma conta: POST /auth/register.

Como register/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Cadastro simplificado: POST /auth/register/simple.

Como register_simple/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Informa se a resposta de login exige segundo fator.

Envia o código 2FA pelo método escolhido (email, sms, whatsapp, call): POST /auth/2fa/send.

Como send_2fa/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Revoga o token atual: POST /auth/token/revoke.

Como token_revoke/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Rotaciona o token: POST /auth/token/rotate.

Como token_rotate/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Lista os métodos 2FA ativos da conta: GET /auth/2fa/methods.

Como two_factor_methods/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Atualiza o perfil: PUT /profile/me.

Como update_me/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Dispara a verificação de email/celular: POST /auth/verification/send.

Como verification_send/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Confirma o código de verificação: POST /auth/verification/verify.

Como verification_verify/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Valida o token atual: GET /auth/verify.

Como verify/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Conclui o login com o código 2FA: POST /auth/login/verify-2fa.

Como verify_2fa/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

Types

result()

@type result() :: {:ok, map()} | {:error, ApiBrasil.Core.Error.t()}

Functions

authenticate(client, session)

@spec authenticate(ApiBrasil.Client.t(), map()) :: ApiBrasil.Client.t()

Devolve um novo cliente com o Bearer Token da sessão aplicado.

Quando a sessão não traz token, devolve o cliente inalterado.

{:ok, sessao} = ApiBrasil.Platform.Auth.login(client, credenciais)
client = ApiBrasil.Platform.Auth.authenticate(client, sessao)

change_password(client, body \\ nil, opts \\ [])

@spec change_password(ApiBrasil.Client.t(), term(), keyword()) :: result()

Troca a senha com a sessão ativa: POST /password/change.

change_password!(client, body \\ nil, opts \\ [])

@spec change_password!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como change_password/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

extract_token(session)

@spec extract_token(map()) :: String.t() | nil

Lê o Bearer Token de uma resposta de autenticação.

Procura em authorization.token e, na sequência, em token — conforme a rota. Devolve nil quando não há token (strings vazias contam como ausentes).

login(client, body \\ nil, opts \\ [])

@spec login(ApiBrasil.Client.t(), term(), keyword()) :: result()

Autentica com email/senha: POST /auth/login.

O body aceita email, password e turnstile_token. Se a conta tiver 2FA, a resposta traz requires_2fa e challenge — use send_2fa/3 e verify_2fa/3 para concluir.

Devolve apenas a sessão: aplique o token no cliente com authenticate/2 (ou use ApiBrasil.login/2, que já entrega o cliente autenticado).

login!(client, body \\ nil, opts \\ [])

@spec login!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como login/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

logout(client, opts \\ [])

@spec logout(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Encerra a sessão: POST /auth/logout.

O cliente é imutável e continua carregando o token antigo — descarte-o ou use ApiBrasil.put_bearer_token(client, nil).

logout!(client, opts \\ [])

@spec logout!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como logout/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

me(client, opts \\ [])

@spec me(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Perfil atual: GET /profile/me.

me!(client, opts \\ [])

@spec me!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como me/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

password_forgot(client, body \\ nil, opts \\ [])

@spec password_forgot(ApiBrasil.Client.t(), term(), keyword()) :: result()

Inicia a recuperação de senha: POST /auth/password/forgot.

password_forgot!(client, body \\ nil, opts \\ [])

@spec password_forgot!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como password_forgot/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

password_resend(client, body \\ nil, opts \\ [])

@spec password_resend(ApiBrasil.Client.t(), term(), keyword()) :: result()

Reenvia o código de recuperação: POST /auth/password/resend.

password_resend!(client, body \\ nil, opts \\ [])

@spec password_resend!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como password_resend/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

password_reset(client, body \\ nil, opts \\ [])

@spec password_reset(ApiBrasil.Client.t(), term(), keyword()) :: result()

Redefine a senha: POST /auth/password/reset.

password_reset!(client, body \\ nil, opts \\ [])

@spec password_reset!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como password_reset/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

password_verify_code(client, body \\ nil, opts \\ [])

@spec password_verify_code(ApiBrasil.Client.t(), term(), keyword()) :: result()

Valida o código de recuperação: POST /auth/password/verify-code.

password_verify_code!(client, body \\ nil, opts \\ [])

@spec password_verify_code!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como password_verify_code/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

profile(client, opts \\ [])

@spec profile(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Perfil completo, com estatísticas: POST /profile.

profile!(client, opts \\ [])

@spec profile!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como profile/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

refresh(client, opts \\ [])

@spec refresh(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Renova o JWT: POST /refresh.

Devolve a nova sessão: aplique o token no cliente com authenticate/2.

refresh!(client, opts \\ [])

@spec refresh!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como refresh/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

register(client, body \\ nil, opts \\ [])

@spec register(ApiBrasil.Client.t(), term(), keyword()) :: result()

Cria uma conta: POST /auth/register.

register!(client, body \\ nil, opts \\ [])

@spec register!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como register/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

register_simple(client, body \\ nil, opts \\ [])

@spec register_simple(ApiBrasil.Client.t(), term(), keyword()) :: result()

Cadastro simplificado: POST /auth/register/simple.

register_simple!(client, body \\ nil, opts \\ [])

@spec register_simple!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como register_simple/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

requires_2fa?(session)

@spec requires_2fa?(map()) :: boolean()

Informa se a resposta de login exige segundo fator.

send_2fa(client, body \\ nil, opts \\ [])

@spec send_2fa(ApiBrasil.Client.t(), term(), keyword()) :: result()

Envia o código 2FA pelo método escolhido (email, sms, whatsapp, call): POST /auth/2fa/send.

send_2fa!(client, body \\ nil, opts \\ [])

@spec send_2fa!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como send_2fa/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

token_revoke(client, opts \\ [])

@spec token_revoke(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Revoga o token atual: POST /auth/token/revoke.

token_revoke!(client, opts \\ [])

@spec token_revoke!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como token_revoke/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

token_rotate(client, opts \\ [])

@spec token_rotate(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Rotaciona o token: POST /auth/token/rotate.

token_rotate!(client, opts \\ [])

@spec token_rotate!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como token_rotate/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

two_factor_methods(client, opts \\ [])

@spec two_factor_methods(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Lista os métodos 2FA ativos da conta: GET /auth/2fa/methods.

two_factor_methods!(client, opts \\ [])

@spec two_factor_methods!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como two_factor_methods/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

update_me(client, body \\ nil, opts \\ [])

@spec update_me(ApiBrasil.Client.t(), term(), keyword()) :: result()

Atualiza o perfil: PUT /profile/me.

update_me!(client, body \\ nil, opts \\ [])

@spec update_me!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como update_me/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

verification_send(client, body \\ nil, opts \\ [])

@spec verification_send(ApiBrasil.Client.t(), term(), keyword()) :: result()

Dispara a verificação de email/celular: POST /auth/verification/send.

verification_send!(client, body \\ nil, opts \\ [])

@spec verification_send!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como verification_send/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

verification_verify(client, body \\ nil, opts \\ [])

@spec verification_verify(ApiBrasil.Client.t(), term(), keyword()) :: result()

Confirma o código de verificação: POST /auth/verification/verify.

verification_verify!(client, body \\ nil, opts \\ [])

@spec verification_verify!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como verification_verify/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

verify(client, opts \\ [])

@spec verify(
  ApiBrasil.Client.t(),
  keyword()
) :: result()

Valida o token atual: GET /auth/verify.

verify!(client, opts \\ [])

@spec verify!(
  ApiBrasil.Client.t(),
  keyword()
) :: map()

Como verify/2, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.

verify_2fa(client, body \\ nil, opts \\ [])

@spec verify_2fa(ApiBrasil.Client.t(), term(), keyword()) :: result()

Conclui o login com o código 2FA: POST /auth/login/verify-2fa.

Devolve a sessão autenticada: aplique o token no cliente com authenticate/2.

verify_2fa!(client, body \\ nil, opts \\ [])

@spec verify_2fa!(ApiBrasil.Client.t(), term(), keyword()) :: map()

Como verify_2fa/3, mas devolve o resultado direto e levanta ApiBrasil.Core.Error em caso de falha.