| Crates.io | noetl-gateway |
| lib.rs | noetl-gateway |
| version | 2.5.11 |
| created_at | 2026-01-11 04:06:30.780516+00 |
| updated_at | 2026-01-21 17:51:51.791488+00 |
| description | NoETL Gateway - GraphQL API gateway for NoETL workflow automation |
| homepage | https://noetl.io |
| repository | https://github.com/noetl/noetl |
| max_upload_size | |
| id | 2035170 |
| size | 154,701 |
Pure API gateway for NoETL - provides GraphQL and REST interfaces for playbook execution with Auth0 authentication.
Pure Gateway Design:
What Gateway Does:
/api/auth/*)What Gateway Does NOT Do:
tests/fixtures/gateway_ui/)POST /graphql - Execute playbooks (requires authentication)GET /graphql - GraphiQL playgroundPOST /api/auth/login - Authenticate with Auth0 tokenPOST /api/auth/validate - Validate session tokenPOST /api/auth/check-access - Check playbook access permissionAll auth endpoints delegate to NoETL server playbooks.
Rust-based GraphQL router/proxy that accepts GraphQL requests from the UI and translates them into NoETL playbook executions. In phase 1 we run the playbook and poll NoETL REST for results; in phase 2 we’ll add NATS subscriptions for live updates. It integrates with:
Status: Initial scaffold suitable for local development and iterative integration.
Notes:
health: String — basic readiness checkexecutePlaybook(name: String!, variables: JSON): Execution — requests NoETL to run a playbookSubscription support will be added in Phase 2.
The service is configured via environment variables:
ROUTER_PORT (default: 8090) — HTTP server portNOETL_BASE_URL (default: http://localhost:8082) — NoETL REST API base URLNATS_URL (default: nats://127.0.0.1:4222) — Optional in Phase 1; used in Phase 2 for subscriptionsNATS_UPDATES_SUBJECT_PREFIX (default: playbooks.executions.) — Optional in Phase 1; Phase 2 subject will be ${prefix}{executionId}.eventsPOST /api/run/playbook with { path, args } to start an execution. For phase 1, poll the result via GET /api/executions/{executionId}.Requirements:
Run:
cargo run
Environment (optional):
export ROUTER_PORT=8090
export NOETL_BASE_URL=http://localhost:8082
# NATS is not used in Phase 1; keep for future Phase 2
export NATS_URL=nats://127.0.0.1:4222
export NATS_UPDATES_SUBJECT_PREFIX=playbooks.executions.
Build:
docker build --progress plain -t gateway:local .
Run:
docker run --rm -p 8090:8090 \
-e NOETL_BASE_URL=http://host.docker.internal:8082 \
gateway:local
Manifests are in k8s/. Update environment to match your cluster services (NoETL service DNS). NATS-related envs are currently unused in Phase 1. Then:
kubectl apply -f k8s/
A ready-to-run GraphQL example for the playbook tests/fixtures/playbooks/api_integration/amadeus_ai_api is provided at:
tests/fixtures/playbooks/api_integration/amadeus_ai_api/router_example.graphql
It contains:
How to run (local):
http://localhost:8082 and NATS at nats://127.0.0.1:4222.cd gateway && cargo rundocker build -t gateway:local .docker run --rm -p 8090:8090 \ -e NOETL_BASE_URL=http://host.docker.internal:8082 \ gateway:localhttp://localhost:8090/.router_example.graphql into the left pane and provide variables like:{
"vars": {
"query": "I want a one-way flight from SFO to JFK on March 15, 2026 for 1 adult"
}
}
id as executionId.curl -s http://localhost:8082/api/executions/<executionId> | jq .
Look for the latest event status and any result payload with the final markdown. You can poll this endpoint until status becomes COMPLETED or FAILED.
POST /api/run/playbook on the NoETL server with body { path, args } to start executions. The name GraphQL argument maps to path (e.g., api_integration/amadeus_ai_api) and variables maps to args.${NATS_UPDATES_SUBJECT_PREFIX}{executionId}.events (default prefix: playbooks.executions.).rustup update.Tests/fixtures playbooks: tests/fixtures/playbooks and tests/fixtures/playbooks/regression_test
NoETL OpenAPI: http://localhost:8082/openapi.json
tests/fixtures/playbooks/api_integration/amadeus_ai_api
https://docs.rs/crate/sqlx-cli/0.8.2
https://dev.to/behainguyen/rust-sqlx-cli-database-migration-with-mysql-and-postgresql-42gp
sqlx migrate add -r my_migration_name
write sql scripts
sqlx migrate run
sqlx migrate revert
cargo sqlx prepare (run always after query changing) need update cache for query! macros for all functions