Skip to main content

:::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​

NameValue
TERMINAL_STATUSES{'success', 'failed', 'aborted', 'error', 'done', 'skipped'}
MAX_RUNS_PAGE200

Verified against honeyframeapi 0.1.8.