Commit Attachment Upload

Finalizes an upload after the file bytes have been PUT to the signed upload URL. Verifies the object landed in storage before the attachment starts describing the new content. Committing an already-committed attachment is a no-op.

post/attachments/{attachmentId}/commit

Path parameters

attachmentIdstring uuid required
Example:3fa85f64-5717-4562-b3fc-2c963f66afa6

The ID of the Attachment to commit.

Response

The committed attachment.

idstring uuid required

The ID of the Attachment.

sessionIdstring required

The session ID the attachment belongs to. Matches the session.id emitted on OTel spans, which is how attachments are joined to traces and records.

filePathstring required

The logical file path of the attachment (e.g. the path the agent wrote on disk). Together with the session ID it identifies the attachment: re-uploading the same path in the same session updates the existing attachment in place.

filenamestring nullable required

Display filename, if provided.

contentTypestring nullable required

MIME type of the last committed content. Null until the first commit.

sizeBytesinteger nullable required

Size in bytes of the last committed content. Null until the first commit.

sha256string nullable required

SHA-256 of the last committed content. Null until the first commit.

status'pending' | 'uploaded' required

uploaded once a commit has succeeded; pending while an initiated upload has not been committed yet.

uploadedAtstring nullable required

ISO 8601 timestamp of the last successful commit. Null until the first commit.

metadataobject nullable required

Arbitrary caller-supplied metadata.

Example response

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sessionId": "c59e5bd0-e5eb-4bf0-a08a-01f7e8f712c7",
  "filePath": "/tmp/report.pdf",
  "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
}

Changes