api rest¶
fonte
lê dados de qualquer endpoint http/rest. suporta paginação automática, autenticação via vault e interpolação de variáveis de pipeline.
casos de uso¶
- consumir apis públicas ou internas com paginação
- extrair dados de plataformas saas (crm, erp, ecommerce)
- integrar webhooks de terceiros como fonte de dados
configuração¶
campos principais¶
| campo | tipo | obrigatório | descrição |
|---|---|---|---|
url |
string | sim | endpoint http. suporta variáveis: {{var_nome}} |
method |
enum | sim | GET, POST, PUT, PATCH |
headers |
lista | não | lista de pares key / value adicionados ao request |
query_params |
lista | não | parâmetros de query string (key / value / enabled) |
timeout |
number | não | timeout em segundos · padrão: 30 |
autenticação¶
| campo | tipo | descrição |
|---|---|---|
auth_type |
enum | none, bearer, basic, api_key, pipeline_var |
credential_id |
uuid | id da credencial no vault (para bearer, basic, api_key) |
bearer_token |
string | referência a variável de pipeline (apenas quando auth_type = pipeline_var) |
corpo da requisição¶
| campo | tipo | descrição |
|---|---|---|
body_type |
enum | none, json, form_data, x_www_form_urlencoded |
body_json |
object | payload json (quando body_type = json) |
body_params |
lista | pares key/value para form data |
paginação¶
| campo | tipo | padrão | descrição |
|---|---|---|---|
pagination_enabled |
bool | false |
habilita busca de múltiplas páginas |
pagination_data_path |
string | — | caminho pontilhado até o array de dados: ex. data.items |
pagination_total_pages_field |
string | — | campo que indica total de páginas: ex. meta.total_pages |
pagination_total_records_field |
string | — | campo com total de registros (alternativa ao total de páginas) |
pagination_request_fields |
lista | — | campos de query que variam por página (chave / valor com {{ page }}) |
pagination_start_page |
number | 1 |
número da primeira página |
pagination_concurrency |
number | 5 |
requisições simultâneas na fase paralela |
max_pages |
number | 0 |
limite de páginas (0 = sem limite) |
rate_limit_rps |
number | 5 |
requisições por segundo |
request_interval_ms |
number | 0 |
intervalo mínimo entre requisições em ms |
exemplos¶
get simples sem paginação¶
{
"url": "https://api.exemplo.com/v1/produtos",
"method": "GET",
"auth_type": "bearer",
"credential_id": "uuid-da-credencial",
"pagination_enabled": false
}
get com paginação por número de página¶
{
"url": "https://api.exemplo.com/v1/pedidos",
"method": "GET",
"auth_type": "api_key",
"credential_id": "uuid-da-credencial",
"pagination_enabled": true,
"pagination_data_path": "data",
"pagination_total_pages_field": "pagination.last_page",
"pagination_request_fields": [
{ "key": "page", "value": "{{ page }}", "enabled": true },
{ "key": "per_page", "value": "100", "enabled": true }
],
"pagination_start_page": 1,
"pagination_concurrency": 5
}
post com body json e variável de pipeline¶
{
"url": "https://api.exemplo.com/v1/relatorio",
"method": "POST",
"auth_type": "bearer",
"credential_id": "uuid-da-credencial",
"body_type": "json",
"body_json": {
"data_inicio": "{{data_inicio}}",
"data_fim": "{{data_fim}}"
}
}
autenticação via variável de pipeline¶
{
"url": "https://api.interna.com/dados",
"method": "GET",
"auth_type": "pipeline_var",
"bearer_token": "Bearer {{token_interno}}"
}
extração de dados aninhados¶
o campo pagination_data_path (ou data_path) usa notação pontilhada para navegar no json:
// resposta da api:
{
"status": "ok",
"data": {
"items": [ {...}, {...} ],
"pagination": { "total": 500, "last_page": 5 }
}
}
// configuração:
{
"pagination_data_path": "data.items",
"pagination_total_pages_field": "data.pagination.last_page"
}
como funciona a paginação concorrente¶
a paginação opera em duas fases:
- fase 1 — sequencial: busca a primeira página para descobrir
total_pagesoutotal_records - fase 2 — paralela: busca as páginas restantes em concorrência controlada por
pagination_concurrency
quando o total de páginas não é conhecido (total_pages_field vazio), a fase 2 usa fallback sequencial, parando ao receber uma página vazia ou status 404.
fase 1: página 1 → descobre total: 10 páginas
fase 2: páginas 2-10 → busca concorrente (5 em paralelo)
resultado: 10 páginas × 100 registros = 1.000 registros
modo sample
ao testar o nó no builder, a paginação é desabilitada automaticamente. apenas a primeira página é buscada para validar a configuração.
credenciais suportadas¶
configure a credencial no vault antes de usar o conector:
| auth_type | campos da credencial |
|---|---|
bearer |
token |
basic |
username, password |
api_key |
key, header_name (padrão: X-API-Key) |
→ veja como criar credenciais em credential vault
variáveis de pipeline¶
qualquer campo de string aceita interpolação com {{nome_da_variavel}}:
as variáveis são resolvidas em tempo de execução a partir das variáveis configuradas no pipeline.