Packages

SDK oficial Elixir da plataforma APIBrasil: WhatsApp, SMS, consultas de CPF/CNPJ, veiculos, CEP, correios, pagamentos PIX/boleto e mais.

Current section

Files

Jump to
apibrasil lib api_brasil platform account.ex
Raw

lib/api_brasil/platform/account.ex

defmodule ApiBrasil.Platform.Account do
@moduledoc """
Conta: saldo, faturas, notificações e tickets.
alias ApiBrasil.Platform.Account
{:ok, saldo} = Account.balance(client)
{:ok, _} = Account.create_ticket(client, %{"subject" => "Dúvida", "message" => "Olá!"})
"""
use ApiBrasil.Core.Service
@doc "Marca uma notificação como lida: `PATCH /notifications/{id}/read`."
@spec mark_notification_read(Client.t(), String.t() | integer(), keyword()) :: result()
def mark_notification_read(client, id, opts \\ []) do
Service.patch(client, "notifications/#{Service.encode_path(id)}/read", nil, opts)
end
@doc """
Como `mark_notification_read/3`, mas levanta `ApiBrasil.Core.Error` em caso
de falha.
"""
@spec mark_notification_read!(Client.t(), String.t() | integer(), keyword()) :: map()
def mark_notification_read!(client, id, opts \\ []) do
Service.unwrap!(mark_notification_read(client, id, opts))
end
@doc "Atualiza um ticket: `PUT /ticket/{id}`."
@spec update_ticket(Client.t(), String.t() | integer(), term(), keyword()) :: result()
def update_ticket(client, id, body \\ nil, opts \\ []) do
Service.put(client, "ticket/#{Service.encode_path(id)}", body, opts)
end
@doc "Como `update_ticket/4`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec update_ticket!(Client.t(), String.t() | integer(), term(), keyword()) :: map()
def update_ticket!(client, id, body \\ nil, opts \\ []) do
Service.unwrap!(update_ticket(client, id, body, opts))
end
@doc "Lista as mensagens de um ticket: `GET /ticket/{id}/messages`."
@spec ticket_messages(Client.t(), String.t() | integer(), keyword()) :: result()
def ticket_messages(client, id, opts \\ []) do
Service.get(client, "ticket/#{Service.encode_path(id)}/messages", opts)
end
@doc "Como `ticket_messages/3`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec ticket_messages!(Client.t(), String.t() | integer(), keyword()) :: map()
def ticket_messages!(client, id, opts \\ []) do
Service.unwrap!(ticket_messages(client, id, opts))
end
@doc "Responde um ticket: `POST /ticket/{id}/messages`."
@spec add_ticket_message(Client.t(), String.t() | integer(), term(), keyword()) :: result()
def add_ticket_message(client, id, body \\ nil, opts \\ []) do
Service.post(client, "ticket/#{Service.encode_path(id)}/messages", body, opts)
end
@doc """
Como `add_ticket_message/4`, mas levanta `ApiBrasil.Core.Error` em caso de
falha.
"""
@spec add_ticket_message!(Client.t(), String.t() | integer(), term(), keyword()) :: map()
def add_ticket_message!(client, id, body \\ nil, opts \\ []) do
Service.unwrap!(add_ticket_message(client, id, body, opts))
end
route_get(:balance, "balance", "Saldo/créditos da conta: `GET /balance`.")
route_get(:plan, "plan", "Plano atual: `GET /plan`.")
route_get(:invoices, "invoices", "Lista as faturas: `GET /invoices`.")
route_get(:invoice_notes, "invoices/notes", "Notas fiscais das faturas: `GET /invoices/notes`.")
route_get(:jobs, "jobs", "Jobs em fila do usuário: `GET /jobs`.")
route_get(:credentials, "credentials", "Credenciais do usuário: `GET /credentials`.")
route_get(:indications, "indications", "Indicações do usuário: `GET /indications`.")
route_get(:notifications, "notifications", "Lista as notificações: `GET /notifications`.")
route_get(:tickets, "tickets", "Lista os tickets de suporte: `GET /tickets`.")
route_post(:pay_invoice, "invoices/pay", "Paga uma fatura: `POST /invoices/pay`.")
route_post(:requests, "requests", "Histórico de requisições da conta: `POST /requests`.")
route_post(
:api_requests,
"api/requests",
"Histórico de requisições por API: `POST /api/requests`."
)
route_post(:create_ticket, "ticket", "Abre um ticket: `POST /ticket`.")
route_empty(
:mark_all_notifications_read,
:post,
"notifications/mark-all-read",
"Marca todas as notificações como lidas: `POST /notifications/mark-all-read`."
)
end