Skip to content

Release the [pin](pin_run_snapshots), returning this run's Workspace Snapshots to the ordinary retention window. Idempotent.

DELETE
/v1/runs/{id}/snapshots-pin
curl --request DELETE \
--url https://example.com/v1/runs/example/snapshots-pin
id
required
string

Run id

Pin released

Media typeapplication/json

The cold-tier retention promise over one Run’s Workspace Snapshots (ADR-0061 s5).

ADR-0061 gives Workspace Snapshots two tiers with two policies. The warm workspace service is bounded by space (LRU) and promises nothing — a miss there is slower, never wrong. Object storage is the cold tier, bounded by time, and that is the guarantee a user is given. Everything in this DTO describes the cold tier only; nothing here can or should say anything about the warm tier.

object
expired
required

The promise has lapsed: this run is terminal, unpinned, and past its window, so its snapshots may already have been swept. Not the same as “gone” — GC is periodic and content is shared, so data often outlives the promise. The honest word for it is expired, not deleted, and a rerun resolves the difference by checking the store.

boolean
expires_at

When this run’s Workspace Snapshots stop being promised (epoch millis). None while the run is non-terminal: a run that has not settled — including one suspended on a gate for weeks — is never GC-eligible regardless of age (ADR-0050), so no expiry applies yet. Also None while pinned, because a pin holds the window open indefinitely.

integer | null format: int64
pinned
required

A human pinned this run’s Workspace Snapshots — hold them past the window for an investigation.

boolean
pinned_at

When it was pinned, epoch millis.

integer | null format: int64
pinned_by

Who pinned it (None when unpinned, or when auth is off).

string | null
retention_days
required

The retention window in days — what the GC sweeper actually enforces.

integer format: int32
Examplegenerated
{
"expired": true,
"expires_at": 1,
"pinned": true,
"pinned_at": 1,
"pinned_by": "example",
"retention_days": 1
}

No such run