Tearleads

POST/blobs/stages/multipart

Initiate a multipart blob stage

Operation blobs.multipartStages.initiate

Description

Opens a blob stage for an encrypted upload, declaring the final byte length, SHA-256 digest, and organization, and returns upload sources for the first parts so they can start at once. The caller must belong to the organization. The stage expires after one hour; nothing becomes readable until an attachment bind promotes it.

Authentication

Requires a signed-in session: the client sends its session token as a bearer token in the Authorization header.

Request body

application/jsonInitiateMultipartBlobStageRequest

Opens a blob stage for one encrypted object.

4 fields
  • organizationIdstringrequired
    • lowercase UUID v4

    Organization the blob will belong to; it must match the destination document's organization at bind time.

  • byteLengthintegerrequired
    • greater than 0

    Exact size of the complete encrypted object.

  • firstPartslist of MultipartBlobPartDescriptorrequired
    • 1 to 4 items

    The one to four parts the client sends first, so the response can carry their upload sources.

  • sha256stringrequired
    • not empty

    SHA-256 of the complete encrypted object, checked when the bind assembles it.

Other fields are allowed.

Responses

200 OK

application/jsonInitiateMultipartBlobStageResponse

A new blob stage and the upload sources for its first parts.

8 fields
  • organizationIdstringrequired
    • not empty
  • byteLengthintegerrequired
    • greater than 0
  • expiresAtstringrequired

    When the stage expires; an attachment bind must complete it before then.

  • partUploadslist of MultipartBlobPartUploadrequired

    One upload source per requested first part, in request order.

  • sha256stringrequired
    • not empty
  • stageIdstringrequired
  • uploadedPartslist of MultipartBlobStagePartrequired

    Parts already uploaded.

  • uploadIdstringrequired

    Object-store multipart upload id; later part authorizations name it.

Other fields are allowed.

Other responses

StatusMeaningBody
400Bad Request

application/jsonErrorResponse

401Unauthorized

application/jsonSessionFailureResponse

403Forbidden

application/jsonErrorResponse

404Not Found

application/jsonErrorResponse

409Conflict

application/jsonErrorResponse

500Internal Server Error

application/jsonErrorResponse

503Service Unavailable

application/jsonErrorResponse