Skip to main content

NoETL Tools Reference

NoETL provides a set of action tools that execute specific tasks within workflows. Each tool is designed for a particular type of operation, from HTTP requests to database queries to container execution.

Available Tools

ToolDescriptionUse Case
HTTPMake HTTP/REST API requestsAPI integrations, webhooks
PostgreSQLExecute PostgreSQL queriesOLTP databases, data storage
PythonRun Python codeData transformation, custom logic
DuckDBAnalytics with DuckDBData analysis, ETL, cloud storage
SnowflakeQuery Snowflake data warehouseData warehouse operations
ContainerRun scripts in KubernetesComplex workloads, custom environments
GCSUpload files to Google Cloud StorageFile storage, data export
DuckLakeLakehouse queriesUnified analytics

Tool Selection Guide

API & Web Operations

  • HTTP: REST API calls, webhooks, external service integration
  • GCS: Cloud storage file uploads

Database Operations

  • PostgreSQL: Transactional workloads, application databases
  • Snowflake: Data warehouse queries, analytics at scale
  • DuckDB: Local analytics, cloud storage queries, cross-source joins
  • DuckLake: Lakehouse architecture, unified data access

Code Execution

  • Python: Data transformation, custom logic, simple scripts
  • Container: Complex dependencies, isolated environments, GPU workloads

Common Patterns

Basic Tool Usage

- step: my_step
tool: http
method: GET
endpoint: "https://api.example.com/data"

With Authentication

- step: secure_query
tool: postgres
auth:
type: postgres
credential: production_db
query: "SELECT * FROM users"

With Variable Extraction

- step: fetch_data
tool: http
method: GET
endpoint: "https://api.example.com/users"
vars:
user_count: "{{ result.data.total }}"
first_user: "{{ result.data.users[0] }}"

With External Script

- step: run_script
tool: python
script:
uri: gs://scripts/transform.py
source:
type: gcs
auth: gcp_service_account

Authentication

All tools support the unified authentication system:

auth:
type: <service_type> # postgres, snowflake, gcs, s3, http, etc.
credential: <name> # Reference to registered credential

See Authentication Reference for details.

Response Format

All tools return a standardized response structure:

{
"id": "task-uuid",
"status": "success",
"data": {
// Tool-specific result data
}
}

On error:

{
"id": "task-uuid",
"status": "error",
"error": "Error message",
"data": {}
}

Template Support

All tools support Jinja2 templating in string values:

- step: dynamic_request
tool: http
endpoint: "{{ workload.base_url }}/{{ vars.resource_id }}"
headers:
Authorization: "Bearer {{ keychain.api_token }}"

Available Context Variables

VariableDescription
workload.*Global workflow variables
vars.*Variables from previous steps
keychain.*Resolved credentials
<step_name>.*Results from specific steps
execution_idCurrent execution ID

See Also