Skip to main content

NoETL Examples

This section provides practical examples demonstrating NoETL patterns and integrations.

:::info 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:

# Local execution
noetl run tests/fixtures/playbooks/hello_world/hello_world.yaml -v

# Distributed execution (requires registration)
noetl register playbook tests/fixtures/playbooks/hello_world/hello_world.yaml
noetl run tests/fixtures/playbooks/hello_world -r distributed

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:

DirectoryDescription
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​

  1. NoETL server running (Kubernetes or local)
  2. PostgreSQL database available
  3. Required credentials registered

Using NoETL CLI​

# Local execution (file path)
noetl run tests/fixtures/playbooks/my_playbook.yaml --set key=value -v

# Distributed execution (catalog path - requires registration first)
noetl register playbook tests/fixtures/playbooks/my_playbook.yaml
noetl run catalog/path/to/playbook -r distributed --set key=value

Contributing Examples​

To add new examples:

  1. Create playbook in tests/fixtures/playbooks/<category>/
  2. Add README.md with documentation
  3. Update fixture inventory in tests/fixtures/playbooks/README.md