Documentation menu
Operations & security

Encrypted objects

Resume uploads and publish immutable objects with their document references in one transaction.

On this page

Begin and resume

POST this body to /api/v1/uploads. Keep the returned upload ID and reserved object identity. GET /uploads/:id reports current parts; repeating initiation returns the original receipt. PUT exact part bytes to /uploads/:id/parts/:index with application/octet-stream. Different bytes cannot replace an accepted part.

json
{
  "requestId": "asset-upload-v1",
  "name": "design.bin",
  "totalSize": 1024,
  "contentType": "application/octet-stream"
}

Publish the object and reference

Put complete_upload and an insert containing the reserved object link later in the same transaction. Completion validates parts and publishes the immutable manifest together with the authorized document reference.

json
{
  "requestId": "publish-asset-v1",
  "operations": [
    {
      "op": "complete_upload",
      "uploadId": "use-returned-upload-id"
    },
    {
      "op": "insert",
      "collection": "assets",
      "key": "design",
      "value": {
        "file": {
          "$object": "use-reserved-object-id"
        }
      }
    }
  ]
}

Download authenticated windows

GET /objects/:id streams authenticated parts in the selected protection mode with backpressure. HEAD reports metadata. A single byte range supports suffix and open ranges; ETags permit cache validation. Downloads are attachments.

Objects use 4 MiB parts and permit up to 16 GiB per object; an embedded read returns at most 16 MiB. Abort only removes unpublished uploads. Published-object deletion and reference-aware retention remain unfinished.