Complete a reserved upload
Complete a reserved upload
/api/v1/attachment-uploads/{upload_id}/completeVerifies the uploaded object, streams it through the private malware scanner, and converts reserved bytes into stored bytes. Completion checks object existence, the exact observed size, the expected object key, and the SHA-256 digest, and decides the content type from the object's leading bytes — never from the client-declared type, which is advisory and is discarded.
Detection and the filename extension are independent grounds for
denial: an object whose detected type is on the execution-risk
denylist is rejected whatever it is named, and a denied extension is
rejected whatever the bytes contain. Neither can permit what the
other rejects. SVG is retained as a download-only attachment: it is
never eligible for inline display. Scanner failures fail completion
closed. A detected malicious attachment is retained only in private
quarantine with scan_state: quarantined; it cannot be linked,
previewed, or downloaded.
Path Parameters
Header Parameters
Request Body
Responses
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
string·min 1·max 255Display filename, at most 255 UTF-8 bytes after NFC normalization.
It must not contain a path separator, null, or control character,
must not be . or .., and must not begin or end with whitespace or
a dot. A violating filename is rejected rather than rewritten.
Filenames never contribute to the server-generated object key.
string·max 255Server-detected from the object's leading bytes, not client-declared.
stringMalware-scan state. New uploads are scanned synchronously before
they become usable: only clean attachments may be linked, previewed,
or downloaded. quarantined attachments remain private and unavailable.
not_scanned is retained only for legacy migration visibility.
not_scannedpendingcleanquarantinedstring <uuid>Opaque Assign-owned UUIDv7 identifier. Clients must not derive meaning from it.
integer·min 0Delay in seconds before retrying, when an expected maintenance end is known.
string·const no-storePrevents storage of error responses by clients and intermediaries.
string·min 1·max 200Correlation identifier for the request.
string·const nosniffPrevents user agents from MIME-sniffing the response.