UNPKG

n8n-nodes-brasilapi

Version:

Community node n8n para acessar a BrasilAPI (CEP, CNPJ, Bancos, Taxas etc.)

245 lines (244 loc) 14.5 kB
"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;