Roll a halted, merged or failed proposal back (DAWG-120).
const url = 'https://api.updawg.net/v1/orgs/example/proposals/example/rollback';const options = {method: 'POST'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.updawg.net/v1/orgs/example/proposals/example/rollbackEvery host it changed goes back to the snapshot it took before the change: the whole filesystem, so configuration edited and logs written since go back too. Hosts without such a snapshot are skipped, and the answer says which and why. One person who may approve may ask; the signer checks that they still may when it signs. Once asked, the proposal cannot be resumed.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Organization slug.
The prp_… id.
Responses
Section titled “Responses”Asked for; the jobs are being signed.
A proposal’s rollback.
object
Why one cannot be asked for now. Absent when it can, or when it has been.
The hosts it restores, each to the snapshot it took before this proposal changed it.
object
The rollback job’s status once it is signed: queued, delivered,
running, succeeded, failed, rejected_by_host, expired.
Hosts the proposal changed that it cannot restore, and why.
object
Examplegenerated
{ "blocked": "example", "hosts": [ { "host_id": "example", "hostname": "example", "job_status": "example", "snapshot_id": "example" } ], "requested": { "at": "2026-04-15T12:00:00Z", "by": "example", "email": "example", "name": "example" }, "skipped": [ { "host_id": "example", "hostname": "example", "reason": "example" } ]}No session.
object
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Not permitted for this role.
object
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No such proposal here.
object
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Not possible now, or already asked for; detail says why.
object
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.
object
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}