HTTP
1. Visão Geral
O componente HTTP (http) é o conector mais versátil da plataforma para comunicação via web: pode funcionar como gatilho (expondo um endpoint REST que dispara o fluxo quando é chamado) ou como ação de saída (fazendo requisições HTTP para outros sistemas).
Use como gatilho quando quiser que seu fluxo seja acionado por uma chamada HTTP externa (por exemplo, um webhook ou uma API própria). Use como ação de saída quando o fluxo precisa consumir uma API externa (buscar dados, enviar informações).
2. Pré-requisitos
- Como gatilho: a porta configurada precisa estar acessível/liberada na rede onde a plataforma roda.
- Como ação de saída: conectividade de rede até a URL de destino.
3. Autenticação e Conexão
O componente não tem um mecanismo de autenticação embutido (nem OAuth nem chave de API nativa) — a autenticação para a API de destino (no modo saída) deve ser feita manualmente através de headers (ex.: Authorization).
| Campo | Obrigatório | Tipo | Descrição | Exemplo |
|---|---|---|---|---|
skipSSLValidation | Não | Texto ("true"/"false") | Se true, desativa a validação de certificado SSL da URL de destino (uso apenas em ambientes de teste/homologação). Valor padrão: "false". | "false" |
4. Configuração / Operações Suportadas
Como gatilho de entrada (recebendo chamadas HTTP)
| Campo | Obrigatório | Tipo | Descrição | Exemplo |
|---|---|---|---|---|
path | Não | Texto | Caminho base do endpoint exposto. Valor padrão: "/". | "/webhooks/pedido" |
methods | Sim, na prática | Texto | Verbos HTTP aceitos, separados por vírgula. | "GET,POST" |
host | Não | Texto | Endereço de rede onde o endpoint escuta. Valor padrão: "0.0.0.0" (todas as interfaces). | "0.0.0.0" |
port | Não | Número | Porta onde o endpoint escuta. Valor padrão: 8080. | 8080 |
consumes | Não | Texto | Tipo de conteúdo esperado na requisição recebida. Valor padrão: "application/json". | "multipart/form-data" |
produces | Não | Texto | Tipo de conteúdo da resposta enviada. Valor padrão: "application/json". | "application/json" |
payloadSize | Não | Texto (bytes) | Tamanho máximo aceito para o corpo da requisição. Valor padrão: "157286400" (150 MB). | "10485760" |
headers | Não | Texto (chave=valor,chave=valor) | Headers extras a incluir na resposta. | "X-App=lowflow" |
statusCode | Não | Texto/Expressão | Código de status HTTP customizado para a resposta. | "201" |
Quando consumes é multipart/form-data, cada campo enviado vira um item no corpo de entrada ({isFile, value} ou {isFile, fileName}), e arquivos enviados ficam disponíveis como propriedades da mensagem. Quando é um tipo de arquivo (PDF, imagem), o corpo é salvo como arquivo temporário e referenciado por nome.
Como ação de saída (fazendo requisições)
| Campo | Obrigatório | Tipo | Descrição | Exemplo |
|---|---|---|---|---|
url | Sim | Texto | URL de destino da requisição. | "https://api.exemplo.com/pedidos" |
method | Não | Texto | Verbo HTTP. Valor padrão: "GET". | "POST" |
timeout | Não | Texto (ms) | Tempo máximo de espera pela resposta. Valor padrão: "30000" (30 segundos). | "60000" |
headers | Não | Texto (chave=valor,chave=valor) | Headers a enviar na requisição. | "Authorization=Bearer xxx" |
contentType | Não | Texto | Tipo de conteúdo do corpo enviado. Valor padrão: "application/json". | "application/json" |
useBodyFromConfig | Não | Texto ("true"/"false") | Se true, usa o campo body da configuração em vez do corpo atual da mensagem. Valor padrão: "false". | "true" |
body | Sim, se useBodyFromConfig for true | Texto | Corpo a enviar na requisição. | {"pedidoId": 981} |
stopOnError | Não | Texto ("true"/"false") | Se true (padrão), uma falha na requisição interrompe o fluxo. Se false, erros de timeout ou de resposta HTTP com falha não interrompem — o erro é embutido na resposta. | "false" |
charset | Não | Texto | Codificação usada para o corpo enviado. Valor padrão: "UTF-8". | "UTF-8" |
processMtom | Não | Texto ("true"/"false") | Trata a resposta como SOAP com anexos binários (MTOM/XOP), quando aplicável. Valor padrão: "false". | "true" |
Se a resposta for um arquivo binário (PDF, imagem, áudio, vídeo, etc.), ele é salvo em um arquivo temporário e referenciado por nome no corpo de resposta, em vez de ser embutido como texto.
5. Exemplos Práticos
Exemplo simples: consumir uma API externa para buscar dados de um pedido.
Entrada:
{
"pedidoId": 981
}
Configuração do componente:
{
"componentName": "http",
"configurations": {
"url": "https://api.exemplo.com/pedidos/{$.body.pedidoId}",
"method": "GET",
"headers": "Authorization=Bearer {$.secrets.apiToken}"
}
}
Resposta:
{
"pedidoId": 981,
"status": "confirmado",
"valor": 150.00
}
Exemplo avançado: expor um endpoint (gatilho) que recebe pedidos via POST, e responde com um status customizado.
Configuração do componente (início do fluxo, como gatilho):
{
"componentName": "http",
"configurations": {
"path": "/webhooks/pedido",
"methods": "POST",
"port": "8080",
"statusCode": "201"
}
}
Corpo recebido pelo fluxo, quando alguém chama POST /webhooks/pedido:
{
"pedidoId": 983,
"cliente": { "nome": "Ana Costa" }
}
Resposta HTTP enviada de volta a quem chamou (definida pelos componentes seguintes do fluxo, por exemplo um Add Variable montando a confirmação):
{
"status": "recebido",
"pedidoId": 983
}
6. Erros Comuns e Troubleshooting
| Erro / Sintoma | Causa provável | Como resolver |
|---|---|---|
| "URL not defined" | O campo url não foi preenchido (modo saída). | Preencher url com o endereço de destino. |
| "Error running the step [nome] (HTTP Connector): ..." | Falha na requisição HTTP (rede, timeout, erro do servidor de destino). | Revisar a URL, conectividade e, se stopOnError estiver ativado, considerar desativá-lo para tratar o erro no próprio fluxo. |
| Endpoint não responde (modo gatilho) | A porta configurada não está acessível, ou o método HTTP usado não corresponde ao configurado em methods. | Confirmar a porta/host configurados e o verbo HTTP usado na chamada. |
| "Body is not a valid JSON object" | O corpo enviado com contentType: multipart/form-data não está no formato esperado (objeto com campos isFile/value). | Ajustar o corpo enviado para o formato esperado pelo multipart. |
| Resposta vem como referência de arquivo em vez de texto | O tipo de conteúdo da resposta é binário (PDF, imagem, etc.) — nesse caso a resposta é salva como arquivo e referenciada por nome. | Usar a propriedade do arquivo referenciado nos passos seguintes do fluxo. |