Skip to main content
PUT
Save the repository's composer draft

Authorizations

Authorization
string
header
required

Enforced on every transport, with no exempt operation. A person's request — over the default local unix socket exactly as over a TCP listener — must carry a JWT issued by the configured identity provider, which the host verifies itself against that issuer's key set: signature, issuer, expiry, and the person and organisation it names. Requests without a valid one receive 401 NRY-0011. The socket's file permissions are transport and are not an authorisation.

Query Parameters

repository
string
required

Absolute path of the repository whose draft to save.

Maximum string length: 4096
ifMatchesSha256
string

Optional precondition: apply this write only while the draft currently stored for repository is still the one whose text hashes to this digest — lowercase hex SHA-256 over the text's UTF-8 bytes, where a repository with no stored draft hashes as the empty string. 412 and no write when it no longer matches, which means another client wrote the row after this one last did. Debounced saves omit it (last write wins is what shares one composer across windows); the terminal sends it only when CLEARING a draft it just submitted or discarded, naming the text it itself last stored — so the clear reaches its own text and never a sibling window's unsent draft.

Pattern: ^[0-9a-f]{64}$

Body

application/json

A repository's saved composer draft — the host's own record of text no client has submitted yet, shared by every session and every window open against that repository.

text
string
required

The draft text. A @path:N-M line-range mention travels unchanged; BOTH marker kinds a composer can hold — a paste chip and an attached file — are expanded to what they stand for before the client ever saves it here, so a stored draft never carries a marker with nothing behind it, since the registry that gives either marker meaning is client-local and does not survive a restart — which is also why the bound is 8 MiB: a single ~2,000-line pasted file already expands past 64 KiB, and a save over the bound is rejected unseen (this is a fire-and-forget best-effort save, so the client never learns the write was rejected), costing the whole draft, not just the paste.

Maximum string length: 8388608

Response

Saved.