Edge Delta HTTP Workflow Input Source

Configure the HTTP Workflow Input source to execute multi-step HTTP request sequences with variable passing, conditional execution, and webhook triggers.

Overview

The HTTP Workflow Input source enables multi-step HTTP request sequences with variable passing between steps, conditional execution, and webhook triggers. This is useful for orchestrating complex API interactions where data from one request informs subsequent requests.

  • outgoing_data_types: log

Note: This node is currently in beta and is available for Enterprise tier accounts.

This node requires Edge Delta agent version v2.8.0 or higher.

Example Configuration

Screenshot Screenshot

This configuration executes a two-step workflow: first authenticating with an API, then using the response to fetch data.

nodes:
  - name: api_workflow
    type: http_workflow_input
    workflow_pull_interval: 5m0s
    steps:
      - name: auth
        endpoint: https://api.example.com/auth
        method: POST
        headers:
          Content-Type: application/json
        request_body: '{"api_key": "{{ SECRET api_key }}"}'
      - name: fetch_data
        endpoint: https://api.example.com/data
        method: GET
        header_expressions:
          Authorization: Concat(["Bearer ", steps["auth"]["body"]["token"]], "")
        is_last_step: true

Required Parameters

name

A descriptive name for the node. This is the name that will appear in pipeline builder and you can reference this node in the YAML using the name. It must be unique across all nodes. It is a YAML list element so it begins with a - and a space followed by the string. It is a required parameter for all nodes.

nodes:
  - name: <node name>
    type: <node type>

type: http_workflow_input

The type parameter specifies the type of node being configured. It is specified as a string from a closed list of node types. It is a required parameter.

nodes:
  - name: <node name>
    type: <node type>

steps

A sequence of HTTP request steps to execute. Each step can reference data from previous steps using OTTL expressions.

FieldDescriptionRequired
nameUnique name for this stepYes
endpointURL to send the HTTP request toNo
methodHTTP method (GET or POST)Yes
headersStatic headers (key-value pairs)No
parametersStatic query parameters (key-value pairs)No
request_bodyStatic request body contentNo
endpoint_expressionOTTL expression for dynamic endpointNo
header_expressionsOTTL expressions for dynamic headersNo
parameter_expressionsOTTL expressions for dynamic query parametersNo
request_body_expressionOTTL expression for dynamic request bodyNo
request_timeoutTimeout for this step’s HTTP requestNo
run_conditionOTTL expression that must evaluate to true for the step to executeNo
is_last_stepMarks this as a terminal stepNo

Optional Parameters

workflow_pull_interval

Interval between workflow executions (e.g., 1m, 5m). Cannot be used with webhook or workflow_pull_schedule.

nodes:
  - name: <node name>
    type: http_workflow_input
    workflow_pull_interval: 5m
    steps:
      - ...

workflow_pull_schedule

Cron expression for scheduled workflow execution (e.g., 0 0 3 * * * for daily at 3 AM). Cannot be used with webhook or workflow_pull_interval.

nodes:
  - name: <node name>
    type: http_workflow_input
    workflow_pull_schedule: "0 0 3 * * *"
    steps:
      - ...

global_timeout

Maximum total time for the entire workflow execution.

nodes:
  - name: <node name>
    type: http_workflow_input
    global_timeout: 2m
    steps:
      - ...

emit_intermediate

Whether to emit results from intermediate steps. Default is false.

nodes:
  - name: <node name>
    type: http_workflow_input
    emit_intermediate: true
    steps:
      - ...

emit_transform

OTTL statements to transform the final emitted log. Access workflow context via steps["name"]["body"], variables["key"], webhook_payload["key"].

nodes:
  - name: <node name>
    type: http_workflow_input
    emit_transform: |
      set(body, steps["fetch_data"]["body"]["results"])      
    steps:
      - ...

webhook

Configure a webhook trigger for this workflow instead of using pull-based scheduling.

FieldDescription
pathURL path for the webhook endpoint (e.g., /webhooks/my-workflow)
methodHTTP method (default: POST)
portWebhook server port (default: 8080)
auth_typeAuthentication method (none, bearer, api_key, hmac)
bearer_tokenToken for bearer authentication
api_keyKey for API key authentication
api_key_headerHeader name for API key (default: X-API-Key)
hmac_secretSecret for HMAC signature validation
hmac_headerHeader containing the HMAC signature (default: X-Webhook-Signature)
nodes:
  - name: <node name>
    type: http_workflow_input
    webhook:
      path: /webhooks/my-workflow
      auth_type: bearer
      bearer_token: '{{ SECRET webhook_token }}'
    steps:
      - ...

Use Cases

Multi-Step API Orchestration

Chain API calls where each step uses data from previous steps.

nodes:
  - name: user_data_workflow
    type: http_workflow_input
    workflow_pull_interval: 10m
    steps:
      - name: get_users
        endpoint: "https://api.example.com/users"
        method: GET
        headers:
          Authorization: '{{ SECRET api_token }}'
      - name: get_details
        method: GET
        endpoint_expression: 'Concat(["https://api.example.com/users/", steps["get_users"]["body"]["id"], "/details"])'
        is_last_step: true

Webhook-Triggered Workflows

Execute workflows in response to external events.

nodes:
  - name: webhook_workflow
    type: http_workflow_input
    webhook:
      path: /webhooks/alerts
      auth_type: hmac
      hmac_secret: '{{ SECRET hmac_key }}'
    steps:
      - name: process_alert
        endpoint: "https://api.example.com/process"
        method: POST
        request_body_expression: 'webhook_payload'
        is_last_step: true

See Also