Skip to content

`GET /v1/orgs/{org}/proposals/{proposal_id}/jobs`.

GET
/v1/orgs/{org}/proposals/{proposal_id}/jobs
curl --request GET \
--url https://api.updawg.net/v1/orgs/example/proposals/example/jobs
org
required
string

Organization slug.

proposal_id
required
string

The prp_… id.

Every job the proposal became, by hostname. Empty until it is approved and dispatched.

Media typeapplication/json
object
jobs
required
Array<object>
object
changes
required

What the host reported changed. Empty until it reports.

Array<object>
object
arch
required
string
from
required
string
name
required
string
to
required
string
created_at
required
string format: date-time
delivered_at
string | null format: date-time
error

The host’s error, when it ran the job and it failed.

string | null
expires_at
required
string format: date-time
finished_at
string | null format: date-time
health_checks
required
Array<object>
object
detail
string | null
duration_ms
required
integer format: int64
name
required
string
passed
required
boolean
host
required
object
display_name
string | null
hostname
required
string
id
required
string
id
required
string
kind
required

apply_updates, reboot, … or unknown for a document this build cannot read.

string
pinned
required

The exact versions the job was signed to install. Empty for a kind that installs nothing named.

Array<object>
object
arch
required
string
from
required
string
name
required
string
to
required
string
reboot_required

null until the host reports.

boolean | null
rejection_reason

Why the host refused it, when it did. A refusal is normal: the host’s own configuration always wins.

string | null
report_unreadable
required

There is a report and this build cannot read it. Never true alongside any of the fields above.

boolean
retried_at

Set when a person resumed past this job’s failure, and its host was sent a new job, which is listed too (DAWG-110).

string | null format: date-time
started_at
string | null format: date-time
status
required

queued, delivered, running, succeeded, failed, rejected_by_host, cancelled or expired. Anything else is passed through as stored.

string
Examplegenerated
{
"jobs": [
{
"changes": [
{
"arch": "example",
"from": "example",
"name": "example",
"to": "example"
}
],
"created_at": "2026-04-15T12:00:00Z",
"delivered_at": "2026-04-15T12:00:00Z",
"error": "example",
"expires_at": "2026-04-15T12:00:00Z",
"finished_at": "2026-04-15T12:00:00Z",
"health_checks": [
{
"detail": "example",
"duration_ms": 1,
"name": "example",
"passed": true
}
],
"host": {
"display_name": "example",
"hostname": "example",
"id": "example"
},
"id": "example",
"kind": "example",
"pinned": [
{
"arch": "example",
"from": "example",
"name": "example",
"to": "example"
}
],
"reboot_required": true,
"rejection_reason": "example",
"report_unreadable": true,
"retried_at": "2026-04-15T12:00:00Z",
"started_at": "2026-04-15T12:00:00Z",
"status": "example"
}
]
}

No session.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

No such proposal here.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}

Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.

Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{
"detail": "example",
"status": 1,
"title": "example",
"type": "example"
}