NoETL Examples
This section provides practical examples demonstrating NoETL patterns and integrations.
Source of Truth
All working, tested playbooks live in the repository at: tests/fixtures/playbooks/
The examples documented here reference those tested implementations.
Quick Start
Hello World
The simplest NoETL playbook:
apiVersion: noetl.io/v2
kind: Playbook
metadata:
name: hello_world
path: examples/hello_world
workload:
message: "Hello World"
workflow:
- step: start
next:
- step: greet
- step: greet
tool:
kind: python
libs: {}
args:
message: "{{ workload.message }}"
code: |
# Pure Python code - no imports, no def main()
result = {"status": "success", "data": {"greeting": f"HELLO: {message}"}}
next:
- step: end
- step: end
Run it:
noetl run playbook tests/fixtures/playbooks/hello_world --host localhost --port 8082
Example Categories
Authentication
OAuth integrations with Auth0, Google Cloud, and other providers.
Data Transfer
Patterns for moving data between HTTP APIs and databases (PostgreSQL, Snowflake, DuckDB).
Pagination
HTTP pagination patterns: page-number, cursor, offset, and combined retry strategies.
Integrations
External API integrations and cloud service connectivity.
Test Fixture Reference
The following directories contain complete, tested playbooks:
| Directory | Description |
|---|---|
hello_world/ | Basic workflow validation |
pagination/ | All pagination patterns (basic, cursor, offset, retry) |
data_transfer/ | HTTP → PostgreSQL, Snowflake transfers |
oauth/ | Google OAuth, Secret Manager, GCS |
api_integration/ | Auth0, webhook handlers |
control_flow/ | Conditional branching, workbook patterns |
iterator_save_test/ | Iterator with database saves |
ducklake_test/ | Distributed DuckDB with PostgreSQL metastore |
script_execution/ | External script loading (GCS, S3, file) |
retry_test/ | Retry mechanism validation |
container_postgres_init/ | Kubernetes container jobs |
Running Examples
Prerequisites
- NoETL server running (Kubernetes or local)
- PostgreSQL database available
- Required credentials registered
Using Task Runner
# Full test with setup
task test-hello-world-full
# Pagination tests
task test:pagination:basic
task test:pagination:cursor
task test:pagination:retry
# Data transfer tests
task test-http-to-postgres-transfer-full
Using CLI
# Register playbook
noetl catalog register playbook <playbook_path> --host localhost --port 8082
# Execute playbook
noetl run playbook <catalog_path> --host localhost --port 8082 --payload '{"key": "value"}'
Contributing Examples
To add new examples:
- Create playbook in
tests/fixtures/playbooks/<category>/ - Add
README.mdwith documentation - Add corresponding task in
taskfile.ymlfor testing - Update fixture inventory in
tests/fixtures/playbooks/README.md