Skip to content

Requisição HTTP (API)

O nó Requisição HTTP é um dos mais poderosos do HorusETL. Ele permite conectar a qualquer API REST/JSON externa para buscar ou enviar dados.


✨ Funcionalidades Principais

  • Métodos Suportados — GET, POST, PUT, DELETE, PATCH
  • Autenticação — Suporte a Basic Auth, Bearer Token, API Key (Header/Query) e OAuth2 (via token)
  • Paginação Automática — Capaz de percorrer múltiplas páginas de resultados automaticamente
  • Loop de Input (Enriquecimento) — Pode executar uma requisição para cada linha que vem do nó anterior (consultar detalhes de um cliente para cada ID de uma lista)

⚙️ Parâmetros de Configuração

Geral

  • URL — Endereço do endpoint (https://api.exemplo.com/v1/pedidos)
  • Método — Verbo HTTP a ser utilizado

Autenticação

Define como o Horus deve se autenticar na API:

TipoDescrição
NoneSem autenticação
BasicUsuário e Senha (codificados em Base64)
BearerToken JWT ou Opaque Token no header Authorization: Bearer <token>
API KeyChave inserida no Header ou na Query String

Carga (Payload/Body)

Usado principalmente em métodos POST/PUT:

  • Raw Content — Corpo da requisição em texto puro (geralmente JSON ou XML)
  • Form Data — Envio de dados como formulário (application/x-www-form-urlencoded)

Paginação

Permite que o Horus percorra todas as páginas de dados:

TipoComportamento
Limit/OffsetIncrementa um contador de offset
Page NumberIncrementa o número da página
Cursor / Next LinkBusca o link da próxima página na resposta atual (campo next_page_url no JSON)

Configurações de Output

  • Data Path — Caminho JSON para encontrar a lista de dados (array) na resposta. Exemplo: se a API retorna { "status": "ok", "data": [ ...itens... ] }, o Data Path deve ser $.data. Se a API já retornar o Array diretamente na raiz, pode deixar vazio
  • Return Full Response — Se marcado, retorna o status code e headers junto com o corpo

🔄 Loop de Input (Iterador)

Esta funcionalidade permite usar dados do nó anterior como parâmetros na requisição:

  1. Habilite o Iterator
  2. Use a sintaxe ${NOME_COLUNA} na URL ou no Body
  3. O Horus fará uma requisição para cada linha recebida
    • Exemplo: https://api.crm.com/clientes/${cliente_id}/compras

WARNING

O Loop de Input pode ser lento se houver muitos registros. Use com cautela ou habilite a execução paralela (Configurações Avançadas).


📅 Interpolação de Variáveis (Datas e Incremental)

Além de usar colunas do input (${COLUNA}), você pode usar as Variáveis Globais do Fluxo para criar cargas dinâmicas e incrementais. As variáveis devem ser usadas no formato {NomeVar:Formato} diretamente na URL ou Parâmetros.

Filtros de Data

Útil para buscar apenas dados de um período específico. As variáveis StartDate e EndDate são configuradas na execução do fluxo:

PadrãoFormatoExemplo de Resultado
Padrão ISO{StartDate:yyyy-MM-dd}2024-01-01
Brasileiro{StartDate:dd/MM/yyyy}01/01/2024
Com Hora{StartDate:yyyy-MM-ddTHH:mm:ss}2024-01-01T12:00:00
Unix Milissegundos{StartDate:unixms}1704067200000 (Milissegundos)

Exemplo de URL: https://api.exemplo.com/vendas?inicio={StartDate:yyyy-MM-dd}&fim={EndDate:yyyy-MM-dd}

Carga Incremental

Para buscar apenas dados novos desde a última execução bem-sucedida, use a variável {LastDataPoint}. O Horus gerencia automaticamente o valor dessa variável (salvando a maior data/ID processado na execução anterior).

Exemplo de URL: https://api.crm.com/vendas?updated_at_gt={LastDataPoint:yyyy-MM-dd HH:mm:ss}

NOTE

Para cargas incrementais, é necessário configurar a tabela de Datawarehouse ou o nó de inserção ao Datalake com as chaves dos registros, permitindo o upsert correto sem duplicar registros.