Current section
Files
Jump to
Current section
Files
lib/api_brasil/data/vehicles.ex
defmodule ApiBrasil.Data.Vehicles do
@moduledoc """
Veículos por placa (device-based): `POST /vehicles/{action}`.
Além das funções nomeadas, `request/4` aceita qualquer action do catálogo e
`queue/4` executa a mesma action por fila.
{:ok, envelope} = ApiBrasil.Data.Vehicles.dados(client, %{"placa" => "ABC1234"})
ApiBrasil.Core.DeviceResponse.response(envelope)
"""
use ApiBrasil.Core.Service, device: "vehicles"
action(
:dados,
"dados",
"Dados do veículo pela placa: `POST /vehicles/dados` — body `%{\"placa\" => \"...\"}`."
)
action(
:fipe,
"fipe",
"FIPE pela placa: `POST /vehicles/fipe` — body `%{\"placa\" => \"...\"}`."
)
action(:base_dados, "base/000/dados", "Base nacional: `POST /vehicles/base/000/dados`.")
action(:base_fipe, "base/000/fipe", "FIPE na base nacional: `POST /vehicles/base/000/fipe`.")
@doc """
Consulta a FIPE por placa na rota dedicada:
`POST /vehicles/consultafipe/{placa}`.
"""
@spec consulta_fipe(Client.t(), String.t(), keyword()) ::
{:ok, DeviceResponse.t()} | {:error, Error.t()}
def consulta_fipe(client, placa, opts \\ []) do
Service.device(client, "vehicles", "consultafipe/" <> Service.encode_path(placa), nil, opts)
end
@doc "Como `consulta_fipe/3`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec consulta_fipe!(Client.t(), String.t(), keyword()) :: DeviceResponse.t()
def consulta_fipe!(client, placa, opts \\ []) do
Service.unwrap!(consulta_fipe(client, placa, opts))
end
end