n8n-nodes-brasilapi
Version:
Community node n8n para acessar a BrasilAPI (CEP, CNPJ, Bancos, Taxas etc.)
245 lines (244 loc) • 14.5 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BrasilApi = void 0;
const got_1 = __importDefault(require("got"));
const BASE_URL = 'https://brasilapi.com.br/api';
class BrasilApi {
constructor() {
this.description = {
displayName: 'Brasil API',
name: 'brasilApi',
icon: 'file:brasilapi.svg',
group: ['transform'],
version: 1,
subtitle: '={{$parameter["operation"]}}',
description: 'Consulta endpoints públicos da BrasilAPI',
defaults: { name: 'Brasil API' },
inputs: ['main'],
outputs: ['main'],
properties: [
/* ------------- operação ------------- */
{
displayName: 'Operation',
name: 'operation',
type: 'options',
options: [
{ name: 'CEP (v1)', value: 'cep' },
{ name: 'CEP (v2)', value: 'cepV2' },
{ name: 'DDD → UF & cidades', value: 'ddd' },
{ name: 'Listar Bancos', value: 'banksList' },
{ name: 'Banco por Código', value: 'bankByCode' },
{ name: 'Câmbio – Listar Moedas', value: 'cambioMoedas' },
{ name: 'Câmbio – Cotação', value: 'cambioCotacao' },
{ name: 'CNPJ', value: 'cnpj' },
{ name: 'Corretoras – Lista', value: 'cvmCorretoras' },
{ name: 'Corretora por CNPJ', value: 'cvmCorretoraByCnpj' },
{ name: 'PIX – Participantes', value: 'pixParticipants' },
{ name: 'Registro.br – Domínio', value: 'registroDomain' },
{ name: 'Taxas – Lista', value: 'taxasList' },
{ name: 'Taxa por Sigla', value: 'taxaBySigla' },
{ name: 'Feriados por Ano', value: 'feriados' },
{ name: 'FIPE – Marcas', value: 'fipeMarcas' },
{ name: 'FIPE – Veículos por Marca', value: 'fipeVeiculos' },
{ name: 'FIPE – Preço', value: 'fipePreco' },
{ name: 'FIPE – Tabelas', value: 'fipeTabelas' },
{ name: 'IBGE – UFs', value: 'ibgeUFs' },
{ name: 'IBGE – UF por Código', value: 'ibgeUFByCode' },
{ name: 'IBGE – Municípios', value: 'ibgeMunicipios' },
{ name: 'NCM – Lista', value: 'ncmList' },
{ name: 'NCM por Código', value: 'ncmByCode' },
{ name: 'ISBN', value: 'isbnByIsbn' },
{ name: 'CPTEC – Cidades', value: 'cptecCidades' },
{ name: 'CPTEC – Buscar Cidade', value: 'cptecBuscaCidade' },
{ name: 'CPTEC – Clima Capitais', value: 'cptecClimaCapital' },
{ name: 'CPTEC – Clima Aeroporto', value: 'cptecClimaAeroporto' },
{ name: 'CPTEC – Previsão 1 dia', value: 'cptecClimaPrevisao' },
{ name: 'CPTEC – Previsão N dias', value: 'cptecClimaPrevisaoDias' },
{ name: 'CPTEC – Ondas 1 dia', value: 'cptecOndas' },
{ name: 'CPTEC – Ondas N dias', value: 'cptecOndasDias' },
],
default: 'cep',
},
/* ------------- parâmetros de rota ------------- */
{ displayName: 'CEP', name: 'cep', type: 'string', default: '', displayOptions: { show: { operation: ['cep', 'cepV2'] } } },
{ displayName: 'CNPJ', name: 'cnpj', type: 'string', default: '', displayOptions: { show: { operation: ['cnpj', 'cvmCorretoraByCnpj'] } } },
{ displayName: 'Código Banco', name: 'bankCode', type: 'number', default: 1, displayOptions: { show: { operation: ['bankByCode'] } } },
{ displayName: 'DDD', name: 'ddd', type: 'number', default: 11, displayOptions: { show: { operation: ['ddd'] } } },
{ displayName: 'Ano', name: 'ano', type: 'number', default: new Date().getFullYear(), displayOptions: { show: { operation: ['feriados'] } } },
{ displayName: 'Sigla Taxa', name: 'sigla', type: 'string', default: 'CDI', displayOptions: { show: { operation: ['taxaBySigla'] } } },
{ displayName: 'Moeda (USD)', name: 'moeda', type: 'string', default: 'USD', displayOptions: { show: { operation: ['cambioCotacao'] } } },
{ displayName: 'Data (YYYY-MM-DD)', name: 'data', type: 'string', default: '2025-01-02', displayOptions: { show: { operation: ['cambioCotacao'] } } },
{ displayName: 'Domínio', name: 'domain', type: 'string', default: 'exemplo.com', displayOptions: { show: { operation: ['registroDomain'] } } },
{ displayName: 'Tipo Veículo (carros,motos,caminhoes)', name: 'tipoVeiculo', type: 'string', default: 'carros',
displayOptions: { show: { operation: ['fipeMarcas', 'fipeVeiculos'] } } },
{ displayName: 'Código Marca', name: 'codigoMarca', type: 'number', default: 1, displayOptions: { show: { operation: ['fipeVeiculos'] } } },
{ displayName: 'Código FIPE', name: 'codigoFipe', type: 'string', default: '001004-9', displayOptions: { show: { operation: ['fipePreco'] } } },
{ displayName: 'Sigla UF', name: 'siglaUF', type: 'string', default: 'SP', displayOptions: { show: { operation: ['ibgeMunicipios'] } } },
{ displayName: 'Código UF', name: 'code', type: 'number', default: 35, displayOptions: { show: { operation: ['ibgeUFByCode'] } } },
{ displayName: 'Buscar (NCM)', name: 'search', type: 'string', default: '', displayOptions: { show: { operation: ['ncmList'] } } },
{ displayName: 'Código NCM', name: 'ncmCode', type: 'string', default: '33051000', displayOptions: { show: { operation: ['ncmByCode'] } } },
{ displayName: 'ISBN', name: 'isbn', type: 'string', default: '9788545702870', displayOptions: { show: { operation: ['isbnByIsbn'] } } },
{ displayName: 'ICAO', name: 'icaoCode', type: 'string', default: 'SBGR', displayOptions: { show: { operation: ['cptecClimaAeroporto'] } } },
{ displayName: 'City Code', name: 'cityCode', type: 'number', default: 4750, displayOptions: { show: { operation: ['cptecClimaPrevisao', 'cptecClimaPrevisaoDias', 'cptecOndas', 'cptecOndasDias'] } } },
{ displayName: 'Days (1-6)', name: 'days', type: 'number', default: 3, displayOptions: { show: { operation: ['cptecClimaPrevisaoDias', 'cptecOndasDias'] } } },
{ displayName: 'Nome Cidade', name: 'cityName', type: 'string', default: '', displayOptions: { show: { operation: ['cptecBuscaCidade'] } } },
/* --------- query opcional (JSON livre) -------- */
{
displayName: 'Extra Query (JSON)',
name: 'extraQuery',
type: 'json',
default: '{}',
description: 'Chave=valor para filtros opcionais',
displayOptions: {
show: {
operation: [
'fipeMarcas', 'fipeVeiculos', 'fipePreco',
'ibgeMunicipios', 'ncmList', 'isbnByIsbn',
],
},
},
},
],
};
}
/* ----------------------- EXECUTE ----------------------- */
async execute() {
const items = this.getInputData();
const out = [];
/* helper HTTP */
const fetch = async (endpoint, query = {}) => got_1.default
.get(`${BASE_URL}${endpoint}`, {
searchParams: query,
timeout: { request: 10000 },
responseType: 'json',
})
.json();
for (let i = 0; i < items.length; i++) {
const op = this.getNodeParameter('operation', i);
const q = this.getNodeParameter('extraQuery', i, {});
let data;
switch (op) {
/* ---------- CEP / DDD ---------- */
case 'cep':
data = await fetch(`/cep/v1/${this.getNodeParameter('cep', i)}`);
break;
case 'cepV2':
data = await fetch(`/cep/v2/${this.getNodeParameter('cep', i)}`);
break;
case 'ddd':
data = await fetch(`/ddd/v1/${this.getNodeParameter('ddd', i)}`);
break;
/* ---------- Bancos ---------- */
case 'banksList':
data = await fetch('/banks/v1');
break;
case 'bankByCode':
data = await fetch(`/banks/v1/${this.getNodeParameter('bankCode', i)}`);
break;
/* ---------- Câmbio ---------- */
case 'cambioMoedas':
data = await fetch('/cambio/v1/moedas');
break;
case 'cambioCotacao': {
const m = this.getNodeParameter('moeda', i);
const d = this.getNodeParameter('data', i);
data = await fetch(`/cambio/v1/cotacao/${m}/${d}`);
break;
}
/* ---------- CNPJ & CVM ---------- */
case 'cnpj':
data = await fetch(`/cnpj/v1/${this.getNodeParameter('cnpj', i)}`);
break;
case 'cvmCorretoras':
data = await fetch('/cvm/corretoras/v1');
break;
case 'cvmCorretoraByCnpj':
data = await fetch(`/cvm/corretoras/v1/${this.getNodeParameter('cnpj', i)}`);
break;
/* ---------- PIX / RegistroBR / Taxas ---------- */
case 'pixParticipants':
data = await fetch('/pix/v1/participants');
break;
case 'registroDomain':
data = await fetch(`/registrobr/v1/${this.getNodeParameter('domain', i)}`);
break;
case 'taxasList':
data = await fetch('/taxas/v1');
break;
case 'taxaBySigla':
data = await fetch(`/taxas/v1/${this.getNodeParameter('sigla', i)}`);
break;
/* ---------- Feriados ---------- */
case 'feriados':
data = await fetch(`/feriados/v1/${this.getNodeParameter('ano', i)}`);
break;
/* ---------- FIPE ---------- */
case 'fipeMarcas':
data = await fetch(`/fipe/marcas/v1/${this.getNodeParameter('tipoVeiculo', i)}`, q);
break;
case 'fipeVeiculos':
data = await fetch(`/fipe/veiculos/v1/${this.getNodeParameter('tipoVeiculo', i)}/${this.getNodeParameter('codigoMarca', i)}`, q);
break;
case 'fipePreco':
data = await fetch(`/fipe/preco/v1/${this.getNodeParameter('codigoFipe', i)}`, q);
break;
case 'fipeTabelas':
data = await fetch('/fipe/tabelas/v1');
break;
/* ---------- IBGE ---------- */
case 'ibgeUFs':
data = await fetch('/ibge/uf/v1');
break;
case 'ibgeUFByCode':
data = await fetch(`/ibge/uf/v1/${this.getNodeParameter('code', i)}`);
break;
case 'ibgeMunicipios':
data = await fetch(`/ibge/municipios/v1/${this.getNodeParameter('siglaUF', i)}`, q);
break;
/* ---------- NCM & ISBN ---------- */
case 'ncmList':
data = await fetch('/ncm/v1', q.search ? { search: q.search } : {});
break;
case 'ncmByCode':
data = await fetch(`/ncm/v1/${this.getNodeParameter('ncmCode', i)}`);
break;
case 'isbnByIsbn':
data = await fetch(`/isbn/v1/${this.getNodeParameter('isbn', i)}`, q);
break;
/* ---------- CPTEC ---------- */
case 'cptecCidades':
data = await fetch('/cptec/v1/cidade');
break;
case 'cptecBuscaCidade':
data = await fetch(`/cptec/v1/cidade/${this.getNodeParameter('cityName', i)}`);
break;
case 'cptecClimaCapital':
data = await fetch('/cptec/v1/clima/capital');
break;
case 'cptecClimaAeroporto':
data = await fetch(`/cptec/v1/clima/aeroporto/${this.getNodeParameter('icaoCode', i)}`);
break;
case 'cptecClimaPrevisao':
data = await fetch(`/cptec/v1/clima/previsao/${this.getNodeParameter('cityCode', i)}`);
break;
case 'cptecClimaPrevisaoDias':
data = await fetch(`/cptec/v1/clima/previsao/${this.getNodeParameter('cityCode', i)}/${this.getNodeParameter('days', i)}`);
break;
case 'cptecOndas':
data = await fetch(`/cptec/v1/ondas/${this.getNodeParameter('cityCode', i)}`);
break;
case 'cptecOndasDias':
data = await fetch(`/cptec/v1/ondas/${this.getNodeParameter('cityCode', i)}/${this.getNodeParameter('days', i)}`);
break;
default:
throw new Error(`Unsupported operation ${op}`);
}
out.push({ json: data });
}
return [out];
}
}
exports.BrasilApi = BrasilApi;