npm package: @gbastian/n8n-nodes-knack
Description: n8n node for Knack API integration
Author: BASTECH
Latest version: 0.8.1

# n8n-nodes-knack

Este é um node customizado para o n8n que permite integração com a API do Knack.

## Recursos Implementados

### Credenciais
- **Application ID**: ID da aplicação Knack
- **API Key**: Chave de API do Knack
- **API URL**: URL base da API (padrão: https://api.knack.com/v1)

### Operações Disponíveis

#### Create Record
Cria um novo registro em um objeto Knack.

**Parâmetros:**
- **Object**: Seleção do objeto Knack
- **Fields**: Campos e valores para o novo registro
  - Seleção dinâmica de campos disponíveis
  - Conversão automática de nomes para chaves de campo

#### Delete Record
Exclui um registro específico.

**Parâmetros:**
- **Object**: Seleção do objeto Knack
- **Record ID**: ID do registro a ser excluído

#### Get Record
Busca um registro específico por ID.

**Parâmetros:**
- **Object**: Seleção do objeto Knack
- **Record ID**: ID do registro a ser recuperado

#### Search Records
Busca registros em um objeto do Knack com suporte a filtros avançados.

**Parâmetros:**
- **Object**: Seleção do objeto Knack
- **Filters**: Sistema de filtros com suporte a múltiplas condições
  - **Match**: AND (todas as condições) ou OR (qualquer condição)
  - **Conditions**: Lista de condições de filtro
    - **Field**: Seleção dinâmica do campo baseado no objeto escolhido
    - **Operator**: Operador de comparação (muda dinamicamente baseado no tipo do campo)
    - **Value**: Valor para comparação

**Novidades na v0.3.0:**
- Adicionada operação GET para buscar registro por ID
- Implementado ícone oficial do Knack
- Mapeamento de campos também na operação GET

**Novidades na v0.2.4:**
- Correção do ícone do node (agora usa Font Awesome)
- Simplificação da lógica de operadores dinâmicos
- Adição de suporte para mais tipos de campo (auto_increment, image, file, date)
- Melhor tratamento de erros

**Novidades na v0.2.3:**
- Correção dos operadores dinâmicos baseados no tipo de campo selecionado
- Tipo do campo agora é incluído no valor do dropdown para garantir operadores corretos
- Melhor mapeamento dos tipos de campo do Knack para operadores

**Novidades na v0.2.2:**
- Correção na exibição dos nomes dos campos (agora usa field.label)
- Correção dos operadores dinâmicos nos filtros
- Melhor tratamento da resposta da API do Knack

**Novidades na v0.2.1:**
- Seleção dinâmica de objetos (dropdown com todos os objetos do app)
- Campos no output agora mostram nomes legíveis ao invés de field keys
- Seleção dinâmica de campos nos filtros
- Operadores de filtro ajustam-se automaticamente ao tipo do campo selecionado
- Opção para incluir field keys originais no output (includeFieldKeys)

#### Update Record
Atualiza um registro existente.

**Parâmetros:**
- **Object**: Seleção do objeto Knack
- **Record ID**: ID do registro a ser atualizado
- **Fields**: Campos e valores para atualizar
  - Seleção dinâmica de campos disponíveis
  - Conversão automática de nomes para chaves de campo

### Funcionalidades Adicionais

**Opções para Search:**
- **Page**: Número da página para paginação
- **Rows Per Page**: Número de registros por página (máximo 1000)
- **Sort Field**: Campo para ordenação
- **Sort Order**: Ordem de classificação (asc/desc)

## Tipos de Campos Suportados

O node suporta filtros inteligentes baseados no tipo de campo:

- **Texto**: short_text, paragraph_text, rich_text
- **Números**: number, currency
- **Data/Hora**: date_time
- **Booleano**: boolean
- **Escolha**: multiple_choice
- **Email**: email
- **Conexão**: connection
- **Endereço**: address
- **Nome**: name
- **Telefone**: phone

Cada tipo de campo tem operadores específicos disponíveis. Por exemplo:
- Campos de texto: is, is not, contains, starts with, ends with, etc.
- Campos numéricos: is, is not, greater than, less than, etc.
- Campos de data: is, before, after, during current/previous/next period, etc.

## Instalação

1. Clone este repositório na pasta de nodes customizados do n8n
2. Execute `npm install` para instalar dependências
3. Execute `npm run build` para compilar o TypeScript
4. Reinicie o n8n

## Uso

1. Configure as credenciais do Knack no n8n
2. Adicione o node Knack ao seu workflow
3. Selecione a operação "Search Records"
4. Configure os filtros conforme necessário
5. Execute o workflow

## Exemplo de Filtro

Para buscar registros onde:
- O campo "status" é "active" E
- O campo "created_date" está nos últimos 30 dias:

1. Set Match to "AND"
2. Add first condition:
   - Field: field_1 (status)
   - Field Type: short_text
   - Operator: is
   - Value: active
3. Add second condition:
   - Field: field_2 (created_date)
   - Field Type: date_time
   - Operator: is during the previous
   - Date Range: Days = 30