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,failedorcancelledfor a measured run.unmeasuredmeans an earlier build recorded the run without executing anything, and what it stored is kept inrecorded_status.started_at/finished_at: the execution window.records_in/records_out/records_failed:nullon an unmeasured run. An unknown count is never shown as zero.error: set on failure.log:nullon an unmeasured run, because its timings and warnings were invented.sample:trueon 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
Try a run
POST /v1/etl/pipelines/{id}/runsanswersstatus: "unsupported"with a tier-5gap(what_is_missing,why,what_would_close_it,alternative) and writes nothing. - 2
Pause / resume
PATCH /v1/etl/pipelines/{id}with{"status":"paused"}or{"status":"active"}toggles whether the pipeline is eligible to run. - 3
Edit the definition
PATCH /v1/etl/pipelines/{id}updatesname,description,destination,transform, orschedule.
# 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.