PPact
Data & ETL

Pipeline detail

The per-pipeline view: its definition, why Run is not offered yet, and how runs recorded by an earlier build read.

Pipeline detail

Open a pipeline at Data → Pipelines → to see its definition and its run history.

Why there is no Run button

Pact has no ETL executor yet, so the page shows a Not established panel where the Run button was. The panel says what is missing (a measured run into this pipeline's destination) and what would close the gap, then gives the next step:

  • a link to the pipeline's source, when a connector reads it; or
  • the import wizard, when no connector does.

POST /v1/etl/pipelines/{id}/runs answers status: "unsupported" and writes nothing.

Run history

The list at GET /v1/etl/pipelines/{id}/runs returns paginated etl_runs rows, newest first. Each run carries:

  • status: running, succeeded, failed or cancelled for a measured run. unmeasured means an earlier build recorded the run without executing anything, and what it stored is kept in recorded_status.
  • started_at / finished_at: the execution window.
  • records_in / records_out / records_failed: null on an unmeasured run. An unknown count is never shown as zero.
  • error: set on failure.
  • log: null on an unmeasured run, because its timings and warnings were invented.
  • sample: true on a seeded sample pipeline, whose figures are shown with a Sample label.

Unmeasured runs count toward neither success nor failure. The pipeline's last_run_at / last_run_status are withheld when they came from one of them, and last_run_unmeasured: true says so.

Controls

  1. 1

    Try a run

    POST /v1/etl/pipelines/{id}/runs answers status: "unsupported" with a tier-5 gap (what_is_missing, why, what_would_close_it, alternative) and writes nothing.

  2. 2

    Pause / resume

    PATCH /v1/etl/pipelines/{id} with {"status":"paused"} or {"status":"active"} toggles whether the pipeline is eligible to run.

  3. 3

    Edit the definition

    PATCH /v1/etl/pipelines/{id} updates name, description, destination, transform, or schedule.

bash
# Ask for a run (refused with a gap today), then read the history
curl -X POST https://api.pact.place/v1/etl/pipelines/7/runs \
  -H "Authorization: Bearer $PACT_API_KEY"

curl "https://api.pact.place/v1/etl/pipelines/7/runs?limit=20" \
  -H "Authorization: Bearer $PACT_API_KEY"

The {id} path param is the internal integer id — the routes in api/routes/etl.py type it as int, so a UUID public_id is not yet accepted here. Every query is tenant-scoped, so a pipeline id belonging to another tenant resolves to 404.