Finalize a large upload
finalize_uploadChecks uploaded hashes, screens the new bytes, and commits one version under the slug lock. Inputs: session (upl_...), optional expected_version, via, heard_from, and token. A stale expected_version returns version_conflict and writes nothing. A bad hash returns hash_mismatch. An expired session returns session_expired.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| via | No | Optional label stored with the publish. At most 80 characters. An IP address, a URL, or an email address is not stored. A non-empty value replaces the X-Via header. | |
| token | No | Bearer token returned by your first publish (deed_tok_...). Optional if the MCP client sends Authorization: Bearer. | |
| session | Yes | Upload session id (upl_...). | |
| heard_from | No | Optional. Where you or your user found deed.page, such as a skill repo, a directory, a blog post, X, or a friend. Free text, at most 200 characters. An email address, IP address, or phone number is stored as [redacted]. A URL or hostname is kept. Omit it and signup continues. | |
| expected_version | No | Live version this commit is based on, such as "v3". Optional when the upload plan already set one; a different value returns bad_request. If the live version has moved, the result is version_conflict and nothing is written. |