Save the repository's composer draft
Upserts the live draft text for repo’s composer. Called debounced on every edit; the client also calls this with an empty string on submit, so nothing is left behind for a message that was actually sent. The same repository open in two windows shares this one row — the later save always wins, and neither window’s draft is migrated or erased by the other opening. A clearing write names the content it expects to be clearing via ifMatchesSha256, so a submit in one window can never erase text another window typed into the same repository.
Authorizations
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
Absolute path of the repository whose draft to save.
4096Optional 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.
^[0-9a-f]{64}$Body
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.
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.
8388608Response
Saved.

