:::note Generated reference Generated from honeyframeapi 0.1.8 — do not edit by hand. :::
honeyframeapi.pipeline
Jobs + pipeline handle — list runs, trigger jobs, poll status, read logs.
Reached via client.jobs:
runs = client.jobs.list_runs(status="failed", limit=10)
run = client.jobs.trigger_and_wait("dbt_run", select="stg_orders+")
print(run["status"])
print(client.jobs.logs("dbt_run", lines=100))
class JobsAPI
Job runs, pipeline triggers and logs (client.jobs).
JobsAPI.list_runs()
list_runs(*, job_type: Optional[str] = None, status: Optional[str] = None, limit: int = 50, offset: int = 0) -> list[dict]
One page of job runs (newest first) — the runs array.
limit is 1–200 (the server's page cap; larger raises
ValueError); page further with offset.
JobsAPI.get_run()
get_run(run_id: int) -> dict
Full run detail incl. log_output.
JobsAPI.abort_run()
abort_run(run_id: int) -> dict
JobsAPI.wait()
wait(run_id: int, *, poll_interval: float = 5.0, timeout: float = 1800.0, raise_on_timeout: bool = False) -> dict
Poll get_run until the run reaches a terminal status.
Returns the final run detail. On timeout it returns the last-seen
(still running) detail, or raises TimeoutError when
raise_on_timeout=True. The run keeps going server-side either way.
JobsAPI.list_pipeline_runs()
list_pipeline_runs(*, status: Optional[str] = None, limit: int = 20) -> list[dict]
Recent pipeline runs (GET /api/pipeline/runs, org admin).
Each row: {run_id, job_name, trigger_type, status, started_at, ended_at, duration_sec, total_rows, error_count, error_message, triggered_by, project_id}. limit is 1–200.
JobsAPI.get_pipeline_run()
get_pipeline_run(run_id: int) -> dict
One pipeline run (GET /api/pipeline/runs/{id}/details):
{run: {...}, details: [...]}.
JobsAPI.trigger()
trigger(job_name: str, *, project_id: Optional[int] = None, **opts: Any) -> dict
Trigger a pipeline job (extract_incremental | extract_organization
| dbt_run). Pass select=, mode=, tables=, organization=,
schedule_at=, start_date=, end_date= as needed.
Returns as soon as the job is started:
{"status": "triggered", "job_name", "triggered_by"} (or
"scheduled" plus scheduled_at/delay_seconds with
schedule_at). There is no run id in it; use
trigger_and_wait to block until the run finishes.
JobsAPI.trigger_and_wait()
trigger_and_wait(job_name: str, *, project_id: Optional[int] = None, poll_interval: float = 5.0, timeout: float = 1800.0, start_timeout: float = 120.0, raise_on_timeout: bool = False, **opts: Any) -> dict
Trigger a pipeline job and block until its run finishes.
The trigger response carries no run id, so this notes the pipeline
runs that already exist, triggers, then waits for the NEW run of
job_name started by the same user, and polls it until it leaves
running. Returns that run's row (status is success /
failed / …). Needs org admin (the same permission as the trigger).
Raises TimeoutError when no run row appears within
start_timeout seconds (the job may have failed to start; check
logs). When the run is still going after timeout it
returns the running row, or raises with raise_on_timeout=True.
schedule_at is refused: a scheduled job has nothing to wait on.
JobsAPI.logs()
logs(job_name: str, *, lines: int = 50) -> list[str]
Tail a job's log file.
Constants
| Name | Value |
|---|---|
TERMINAL_STATUSES | {'success', 'failed', 'aborted', 'error', 'done', 'skipped'} |
MAX_RUNS_PAGE | 200 |
Verified against honeyframeapi 0.1.8.