n8n-nodes-hundredbug
v0.2.0
Published
n8n community node for the 100Bug CRM API (UI em pt-BR, campos individuais por operação)
Maintainers
Readme
n8n-nodes-hundredbug
Pacote de community node para integrar o n8n com a API do CRM 100Bug.
Este pacote foi construído a partir do comportamento observado da API e documenta apenas formatos genéricos de endpoints. Ele não inclui credenciais reais, tokens, e-mails, telefones, nomes de leads, nomes de imóveis ou IDs específicos de conta.
Instalação
Siga o guia oficial do n8n para community nodes:
https://docs.n8n.io/integrations/community-nodes/installation/
Para desenvolvimento local:
npm install
npm run buildCredenciais
Crie uma credencial 100Bug API no n8n com:
- Email: seu e-mail de login do 100Bug
- Password: sua senha do 100Bug
- API Base URL:
https://api.100bug.app
O node faz login via POST /session na execução e usa o JWT retornado
apenas em memória. O token não é retornado no output do node.
Recursos e operações
A UI do node está totalmente em português. Os value internos das
operações são preservados em inglês para não quebrar workflows
existentes.
Contato
- Listar (
GET /contatos) — filtro de servidor apenas por nome (telefone / e-mail são ignorados pela API) - Obter (
GET /contatos/:id) - Buscar Por Nome (
POST /busca-contatos) - Criar (
POST /contatos)
DELETE
/contatos/:idretorna 500 — endpoint não implementado.
Negociação
- Listar — A API NÃO tem endpoint global. O node itera as fases do funil informado (1 chamada por fase) e concatena os resultados. Use com cuidado para funis com muitas fases.
- Listar Por Fase (
GET /negocios/:funilId/:faseId) - Obter (
GET /negocios/:id) - Criar (
POST /negocios) - Atualizar (
PUT /negocios/:id)
Campos individuais expostos em Criar/Atualizar: Nome, Valor, Status,
Funil ID, Fase ID, Contatos, Responsáveis, Imóveis Revenda, Imóveis
Lançamento, Tags, Produtos, Origem de Cliente ID, Canal de Cliente ID,
Motivo de Perda ID (update), Tipo de Marcação (update) e um campo
Campos Adicionais (JSON) para extensões.
Importante: SEMPRE preencha
Responsáveisao criar. Sem responsáveis a API cria um registro órfão que não aceita mais PUT (bug404 E_ROW_NOT_FOUND).
DELETE
/negocios/:idnão existe. Para "excluir" use Atualizar definindoFase IDpara a fase "Perdeu" +Motivo de Perda ID+Tipo de Marcação = Perdido.
Nota Da Negociação
- Listar (
GET /negocios/notas/:negocio_id) - Criar Nota De Texto (
POST /negocios/notas) - Criar Nota De Imagem (
POST /negocios/notas, multipart) - Atualizar Texto (
PUT /negocios/notas/:id) - Excluir (
DELETE /negocios/notas/:id)
Atividade
- Listar (
GET /atividades) — Filtros locais por ID de negócio e status (a API ignora todos os filtros de servidor) - Obter (
GET /atividades/:id) - Criar (
POST /atividades) - Atualizar / Vincular (
PUT /atividades/:id) - Excluir (
DELETE /atividades/:id)
Criar/Atualizar expõem campos individuais: Título, Descrição, Status, Data de Início, Data de Fim, ID do Responsável, Negócios IDs, Contatos IDs e Campos Adicionais.
POST ignora vínculos (
negocios/contatos). O node faz um PUT automático em seguida quando esses campos são informados na criação. GET por ID não traz vínculos — use Listar para verificar.
Arquivo Da Negociação
- Listar (
GET /negocios/:id/arquivos) - Enviar Arquivo (
POST /negocios/:id/arquivos, multipart) - Excluir (
DELETE /negocios/:id/arquivos/:fileId)
O upload lê uma propriedade binária do item de entrada (default data).
Imóvel
- Listar Lançamentos (
GET /imoveis-lancamento) — filtros individuais validados: Nome, ID do Incorporador, Tipo, Status, Preço Mínimo/Máximo, Quartos Mínimo/Máximo, Área Mínima/Máxima, Região, Busca de Endereço, Cidade, Áreas/Bairros (JSON array), Datas de Abertura e de Lançamento. - Obter Lançamento (
GET /imoveis-lancamento/:id) - Autocompletar Lançamento (
GET /imoveis-lancamento/autocomplete) - Listar Revenda / Aluguel (
GET /imoveis-revenda) — Tipo de Transação (Aluguel/Revenda), Tipo, Finalidade, Cidade, Nome, Preço Mín/Máx, Quartos Mín/Máx, Área Mín/Máx, Bairro. - Obter Revenda / Aluguel (
GET /imoveis-revenda/:id) - Autocompletar Revenda / Aluguel (
GET /imoveis-revenda/autocomplete) - Listar Bairros / Áreas (
GET /imoveis-endereco-areas) - Listar Incorporadores (
GET /imoveis-incorporador)
Funil
- Listar (
GET /funis) - Obter (
GET /funis/:id) - Listar Motivos De Perda (
GET /motivos-perda-funis/:funilId)
Catálogo
- Usuário Atual / Preferências do Usuário
- Canais de Cliente / Origens de Cliente / Etiquetas
- Painel / Saúde da API / Notificações / Notificações Não Lidas
- Categorias de Campos Personalizados / Campos Personalizados
- Integrações de Portais / Assinatura de Cobrança
Requisição Customizada
Para endpoints recém descobertos. O node continua tratando login e Authorization automaticamente. Forneça:
- Método
- Caminho começando com
/ - Parâmetros de Query (JSON)
- Body (JSON) para POST/PUT/PATCH
Observações de segurança
- Não armazene credenciais em JSON de workflow, documentação, mensagens de commit ou parâmetros do node. Use apenas as credenciais do n8n.
- O node redige tokens Bearer das mensagens de erro capturadas antes de
retornar via
continueOnFail. - O README intencionalmente usa IDs e exemplos genéricos.
Quirks conhecidos da API 100Bug
POST /sessionretorna status201e o token emtoken.token.POST /negociosexige apenasfunis_idefases_id; todos os outros campos são opcionais. Sempre envieresponsaveispara evitar criar registros órfãos.POST /negociosaceita silenciosamenteprevisao_fechamento,data_fechamento,motivo_perda_id,origem_leadmas não os persiste.imoveisLancamentoetagsfuncionam tanto emPOSTquanto emPUT /negocios.- Arrays de vínculo precisam ser
array<number>. Enviar[{ id: 123 }]causa500com vazamento de stack trace. - Filtro
?negocios_id=em/atividadesé ignorado pela API. Use o filtro local "ID do Negócio" do node. POST /atividadesignoranegocios/contatos. O node faz o PUT de vínculo automaticamente quando esses campos estão preenchidos.GET /atividades/:idNÃO incluinegocios/contatosvinculados. Use Listar para inspecionar vínculos.POST /negocios/notasexigenegocio_id(singular). Não envienegocios_id.DELETE /negocios/notas/:idretorna 200 com mensagem (em vez de 204).DELETE /negocios/:idretorna 404 (endpoint não existe). Para "excluir" use PUT para a fase "Perdeu" commotivo_perda_idetipo_marcacao: "perdido".DELETE /contatos/:idretorna 500 (endpoint não existe).
Compatibilidade
Construído com o n8n node starter usando @n8n/node-cli.
Licença
MIT
