Oore CI

Builds

Build lifecycle — queue, list, detail, cancel.

GET
/v1/builds

Returns builds, optionally filtered by project, pipeline, status, branch, trigger, actor, or creation time, or searched with q.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Query Parameters

limit?integer

Page size (default 50)

Formatint64
offset?integer

Page offset (default 0)

Formatint64
project_id?string

Filter by project

pipeline_id?string

Filter by pipeline

status?string

Filter by one status or up to 9 comma-separated statuses

branch?string

Filter by exact branch name

trigger?string

Filter by one or more comma-separated trigger kinds: manual, api, schedule, push, pull_request, or tag_push. The last three are webhook events.

actor?string

Filter by exact trigger actor (the user email for manual builds, the SCM login for webhook builds). At most 320 characters.

created_after?integer

Only builds created at or after this Unix time in seconds

Formatint64
created_before?integer

Only builds created before this Unix time in seconds. Must be later than created_after.

Formatint64
q?string

Search builds, case-insensitively, by build number (with or without #), part of the branch, the start of the commit SHA, or part of the pipeline or project name. At most 200 characters.

sort?string

Sort by created_at, status, project_name, pipeline_name, or branch

direction?string

Sort direction: asc or desc

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds"
{  "builds": [    {      "approval": null,      "branch": "string",      "build_number": 0,      "changelog": "string",      "commit_sha": "string",      "config_snapshot": {},      "context": null,      "created_at": 0,      "exit_code": 0,      "finished_at": 0,      "id": "string",      "pipeline_id": "string",      "project_id": "string",      "queued_at": 0,      "retry_steps": [        "string"      ],      "runner_id": "string",      "runner_policy_block_reason": null,      "source_build_id": "string",      "started_at": 0,      "status": "queued",      "step_results": [        {          "duration_ms": 0,          "exit_code": 0,          "finished_at": 0,          "name": "string",          "publish_from_file": true,          "started_at": 0,          "status": "string"        }      ],      "trigger_actor": "string",      "trigger_event": "string",      "trigger_ref": "string",      "trigger_type": "manual",      "updated_at": 0    }  ],  "total": 0}
GET
/v1/builds/actors

Distinct trigger actors on builds the caller can see, most recently active first, for the builds list's actor filter.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Query Parameters

project_id?string

Only actors of this project's builds

q?string

Case-insensitive part of the actor. At most 200 characters.

limit?integer

Maximum actors (default 50, at most 200)

Formatint64

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds/actors"
{  "actors": [    "string"  ]}
GET
/v1/builds/insights

Success rate, run time, queue wait, a daily trend, per-project health and the most-failing pipelines for builds the caller can see.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Query Parameters

days?integer

Window length in days: 7 (default), 14, 30 or 90

Formatint64
project_id?string

Limit to one project

utc_offset_minutes?integer

Caller's UTC offset for daily buckets, -720 to 840 (default 0)

Formatint64

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds/insights"
{  "daily": [    {      "day_start": 0,      "failed": 0,      "other": 0,      "p50_duration_seconds": 0,      "succeeded": 0    }  ],  "duration": {    "p50_seconds": 0,    "p90_seconds": 0,    "samples": 0  },  "failing_pipelines": [    {      "current_streak": 0,      "failures": 0,      "finished": 0,      "last_failed_at": 0,      "last_failed_build_id": "string",      "last_failed_build_number": 0,      "pipeline_id": "string",      "pipeline_name": "string",      "project_id": "string",      "project_name": "string"    }  ],  "previous_duration": {    "p50_seconds": 0,    "p90_seconds": 0,    "samples": 0  },  "previous_totals": {    "canceled": 0,    "expired": 0,    "failed": 0,    "finished": 0,    "succeeded": 0,    "success_rate": 0,    "timed_out": 0  },  "projects": [    {      "duration": {        "p50_seconds": 0,        "p90_seconds": 0,        "samples": 0      },      "last_finished_at": 0,      "last_status": "queued",      "project_id": "string",      "project_name": "string",      "totals": {        "canceled": 0,        "expired": 0,        "failed": 0,        "finished": 0,        "succeeded": 0,        "success_rate": 0,        "timed_out": 0      }    }  ],  "queue": {    "awaiting_approval": 0,    "oldest_waiting_since": 0,    "running": 0,    "waiting": 0  },  "queue_wait": {    "p50_seconds": 0,    "p90_seconds": 0,    "samples": 0  },  "since": 0,  "totals": {    "canceled": 0,    "expired": 0,    "failed": 0,    "finished": 0,    "succeeded": 0,    "success_rate": 0,    "timed_out": 0  },  "window_days": 0}
GET
/v1/builds/{build_id}

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds/string"
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  },  "events": [    {      "actor": "string",      "build_id": "string",      "created_at": 0,      "from_status": "string",      "id": "string",      "reason": "string",      "to_status": "string"    }  ],  "retryable_steps": [    "string"  ]}
GET
/v1/builds/{build_id}/analysis

Returns the dart analyze counts and most severe diagnostics of a build, with the baseline build on the base branch it compares with. analysis is null when the build reported none.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds/string/analysis"
{  "analysis": null,  "base_branch": "string",  "baseline": null}
POST
/v1/builds/{build_id}/approve

Releases a build that is waiting for approval to the runner queue. Requires the project maintainer role.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Request Body

application/json

Optional note for the audit log

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/builds/string/approve" \  -H "Content-Type: application/json" \  -d '{}'
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  }}
POST
/v1/builds/{build_id}/cancel

Cancels a queued or running build.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/builds/string/cancel"
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  }}
GET
/v1/builds/{build_id}/feedback

Notes testers sent about this build, oldest first. Needs read access to the build's project.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds/string/feedback"
{  "feedback": [    {      "app_version": "string",      "artifact_id": "string",      "author_email": "string",      "author_name": "string",      "build_id": "string",      "created_at": 0,      "device": "string",      "has_screenshot": true,      "id": "string",      "message": "string",      "os_version": "string"    }  ]}
POST
/v1/builds/{build_id}/feedback

Files a tester's note against a build, with optional device, OS version, app version and a PNG, JPEG or WebP screenshot of up to 5 MiB. Anyone who can install the build's artifacts can send one. The note shows on the build's timeline and is sent to the project's notification channels as a qa_feedback event. Each person can send 10 notes per 10 minutes.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/builds/string/feedback" \  -H "Content-Type: application/json" \  -d '{    "message": "string"  }'
{  "app_version": "string",  "artifact_id": "string",  "author_email": "string",  "author_name": "string",  "build_id": "string",  "created_at": 0,  "device": "string",  "has_screenshot": true,  "id": "string",  "message": "string",  "os_version": "string"}
GET
/v1/builds/{build_id}/feedback/{feedback_id}/screenshot

Returns the screenshot attached to a feedback note, with the image type detected from its bytes. Needs read access to the build's project.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

feedback_id*string

Feedback ID

Response Body

image/*

application/json

application/json

curl -X GET "https://example.com/v1/builds/string/feedback/string/screenshot"
"string"
POST
/v1/builds/{build_id}/reject

Cancels a build that is waiting for approval. Requires the project maintainer role.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Request Body

application/json

Optional reason, shown on the build

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/builds/string/reject" \  -H "Content-Type: application/json" \  -d '{}'
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  }}
POST
/v1/builds/{build_id}/rerun

Creates a new build cloning the original build's config_snapshot, branch, and commit_sha.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Source build ID to re-run

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/builds/string/rerun"
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  }}
POST
/v1/builds/{build_id}/retry-step

Queues a new build that runs one store upload of a finished build again, plus any later upload that has not succeeded, with the artifacts the build already stored. Only steps listed in the build's retryable_steps can be retried; other steps need a full re-run.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build whose step to retry

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/builds/string/retry-step" \  -H "Content-Type: application/json" \  -d '{    "step": "string"  }'
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  }}
GET
/v1/builds/{build_id}/tests

Returns the test summary and failed tests of a build. Each failure carries its outcome in recent test-reporting builds of the same pipeline and whether it looks flaky.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

build_id*string

Build ID

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/builds/string/tests"
{  "failures": [    {      "duration_ms": 0,      "flaky": true,      "history": [        {          "build_id": "string",          "build_number": 0,          "status": "string"        }      ],      "message": "string",      "name": "string",      "stack_trace": "string",      "step": "string",      "suite": "string"    }  ],  "history_window": 0,  "summary": null}
POST
/v1/projects/{project_id}/builds

Queues a new build for the specified project.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

project_id*string

Project ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/projects/string/builds" \  -H "Content-Type: application/json" \  -d '{    "pipeline_id": "string"  }'
{  "build": {    "approval": null,    "branch": "string",    "build_number": 0,    "changelog": "string",    "commit_sha": "string",    "config_snapshot": {},    "context": null,    "created_at": 0,    "exit_code": 0,    "finished_at": 0,    "id": "string",    "pipeline_id": "string",    "project_id": "string",    "queued_at": 0,    "retry_steps": [      "string"    ],    "runner_id": "string",    "runner_policy_block_reason": null,    "source_build_id": "string",    "started_at": 0,    "status": "queued",    "step_results": [      {        "duration_ms": 0,        "exit_code": 0,        "finished_at": 0,        "name": "string",        "publish_from_file": true,        "started_at": 0,        "status": "string"      }    ],    "trigger_actor": "string",    "trigger_event": "string",    "trigger_ref": "string",    "trigger_type": "manual",    "updated_at": 0  }}
GET
/v1/projects/{project_id}/builds/changelog-preview

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

project_id*string

Project ID

Query Parameters

pipeline_id*string

Pipeline ID

branch?string

Target branch

commit_sha?string

Target commit

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/projects/string/builds/changelog-preview?pipeline_id=string"
{  "base_commit": "string",  "markdown": "string",  "target_commit": "string"}
POST
/v1/runners/{runner_id}/jobs/{job_id}/analysis

Runner reports the dart analyze --format=json summary of a build. A later report replaces an earlier one. Only accepted while the build runs.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

runner_id*string

Runner ID

job_id*string

Build/Job ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

The summary of dart analyze --format=json a runner reports after the build's steps.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/runners/string/jobs/string/analysis" \  -H "Content-Type: application/json" \  -d '{    "counts": {      "errors": 0,      "infos": 0,      "warnings": 0    },    "diagnostics": [      {        "code": "string",        "column": 0,        "file": "string",        "line": 0,        "message": "string",        "severity": "error"      }    ]  }'
{  "ok": true}
POST
/v1/runners/{runner_id}/jobs/{job_id}/test-results

Runner reports the tests parsed from one build step. Reports from several steps of a build add up. Only accepted while the build runs.

Authorization

bearer_auth
AuthorizationBearer <token>

In: header

Path Parameters

runner_id*string

Runner ID

job_id*string

Build/Job ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Test results parsed by the runner from one build step.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/runners/string/jobs/string/test-results" \  -H "Content-Type: application/json" \  -d '{    "duration_ms": 0,    "failed": 0,    "failures": [      {        "name": "string",        "suite": "string"      }    ],    "passed": 0,    "skipped": 0,    "step": "string",    "total": 0  }'
{  "ok": true}