faucet-cli 1.0.0

Config-driven CLI runner for faucet-stream pipelines (YAML / JSON, Meltano-style)
Documentation
# YAML equivalent of `faucet-stream/examples/dag_users_posts.rs`.
#
# Demonstrates the matrix DAG syntax: a `users` root row produces records,
# and the `posts` child row runs once per user, interpolating `${users.id}`
# into the child's source path. The child's state key is suffixed with the
# parent record's `id` so each per-user fetch resumes independently.
version: 1
name: dag_users_posts

pipeline:
  source:
    type: rest
    config:
      base_url: https://api.example.com
      method: GET
      auth:
        type: bearer
        config:
          token: ${env:API_TOKEN}
      headers: {}
      records_path: $.data[*]
      pagination:
        type: PageNumber
        param_name: page
        start_page: 1
        page_size: 100
        page_size_param: per_page
      max_pages: 20
      timeout: 30
      max_retries: 3
      retry_backoff: 1
      tolerated_http_errors: []
      replication_method:
        type: FullTable
      primary_keys: [id]
      partitions: []
      schema_sample_size: 100

  sink:
    type: jsonl
    config:
      append: false
      pretty: false

matrix:
  # Root row: fetch the users list once.
  - id: users
    source:
      config:
        path: /v1/users
        name: users
        query_params:
          active: "true"
    sink:
      config:
        path: users.jsonl

  # Child row: for each user record produced above, fetch that user's
  # posts. `${users.id}` is resolved per parent record at runtime.
  - id: posts
    parent: users
    parent_key: id
    source:
      config:
        path: /v1/users/${users.id}/posts
        name: posts
    sink:
      config:
        path: posts-${users.id}.jsonl