ServicesScanDALHTTP APIBlobs

Start a blob upload

POST
/blobs/uploads/start

Start a multipart upload of one blob into a write attempt, for a payload too large for one request. Send its parts to any instance, in any order and each retried on its own, then complete it for a blob that a row appended in the same write can carry. A binding the Tables API issued for the attempt is enough.

Authorization

bearerAuth
headerAuthorizationBearer <token>

Request Body

application/json
  1. body

The Table and write attempt to upload into, with the attempt's binding from the Tables API. partBytes is a power of two from 8 MiB to 1 GiB, 64 MiB unless set, and at most a request's memory budget; an upload holds at most 10,000 parts.

attempt*string
Formatuuid
mediaType*string
partBytes?||null
table*

A Table identity and optional explicit storage. The host resolves omitted storage as the caller.

Response Body

Success

application/json
  1. response

A multipart upload of one blob into a write attempt, at attempts/<attempt>/blobs/<objectId> under the Table's root. The client keeps it and sends it with each part and with its completion; the storage provider keeps the upload's progress, so any instance serves any step. Every part but the last holds exactly partBytes, a power of two.

attempt*string
Formatuuid
mediaType*string
objectId*string
Formatuuid
partBytes*|
tableId*string
Formatuuid
uploadId*string
curl -X POST 'https://scandal.spiraldb.dev/blobs/uploads/start' \  -H 'Content-Type: application/json' \  -d '{  "attempt": "d2c50383-9b42-408a-bf30-8303c70e72c1",  "mediaType": "string",  "table": {    "tableId": "073fbfcb-cd05-4203-be18-a1ce6f8e4d2d"  }}'
{  "attempt": "d2c50383-9b42-408a-bf30-8303c70e72c1",  "mediaType": "string",  "objectId": "e39ea5f2-2188-47f8-add0-f1976630af5e",  "partBytes": "string",  "tableId": "073fbfcb-cd05-4203-be18-a1ce6f8e4d2d",  "uploadId": "string"}