Packages

A simple Elixir client for BrasilAPI, a public API that provides access to various Brazilian data such as postal codes, banks, states, cities, and more.

Current section

Files

Jump to
brasilapi lib brasilapi cnpj api.ex
Raw

lib/brasilapi/cnpj/api.ex

defmodule Brasilapi.Cnpj.API do
@moduledoc """
Client for BrasilAPI CNPJ endpoints.
Provides functions to fetch information about Brazilian companies by CNPJ.
"""
alias Brasilapi.{Client}
alias Brasilapi.Cnpj.Company
alias Brasilapi.Utils.Cnpj
@doc """
Fetches information about a company by its CNPJ.
## Parameters
* `cnpj` - The CNPJ number (string or integer)
## Examples
iex> Brasilapi.Cnpj.API.get_by_cnpj("11000000000197")
{:ok, %Brasilapi.Cnpj.Company{cnpj: "11000000000197", razao_social: "ACME INC"}}
iex> Brasilapi.Cnpj.API.get_by_cnpj("00000000000000")
{:error, %{status: 404, message: "Not found"}}
"""
@spec get_by_cnpj(String.t() | integer()) :: {:ok, Company.t()} | {:error, map()}
def get_by_cnpj(cnpj) do
with {:ok, cnpj_string} <- Cnpj.sanitize_and_validate(cnpj),
{:ok, %{} = company} <- Client.get("/cnpj/v1/#{cnpj_string}") do
{:ok, Company.from_map(company)}
end
end
end