Skip to content

BlobService ​

BlobStore service: content-addressed chunk storage for large values.

Values >= 4KB are split into 256KB chunks identified by SHA-256 hash. Content-addressing provides automatic deduplication.

Transport

All methods are available via:

  • gRPC on port 7080 — native high-performance API
  • REST/JSON on port 7081 — HTTP/JSON transcoding via embedded structured-proxy

Methods ​

UploadBlob ​

Upload a blob as a stream of chunks. Returns the BlobRef (ordered chunk IDs + total size) for later retrieval.

HTTP: POST /v1/blobs

Request: stream BlobChunk

FieldTypeDescription
databytesChunk data (up to 256KB per message).
sequenceuint32Chunk sequence number (0-based, for ordering verification).

Response: UploadBlobResponse

FieldTypeDescription
blob_idstringUnique blob identifier (hex-encoded composite of chunk hashes).
chunk_idsstring[]Ordered list of SHA-256 chunk hashes (hex, 64 chars each).
total_sizeuint64Total size of the uploaded blob in bytes.
dedup_chunksuint32Number of chunks that were deduplicated (already existed).

DownloadBlob ​

Download a blob by its chunk IDs, returned as a stream of chunks.

HTTP: GET /v1/blobs/{blob_id}

Request: DownloadBlobRequest

FieldTypeDescription
blob_idstringBlob identifier returned from UploadBlob.

Response: stream BlobChunk

FieldTypeDescription
databytesChunk data (up to 256KB per message).
sequenceuint32Chunk sequence number (0-based, for ordering verification).

DeleteBlob ​

Delete a blob and its unreferenced chunks.

HTTP: DELETE /v1/blobs/{blob_id}

Request: DeleteBlobRequest

FieldTypeDescription
blob_idstringBlob identifier.

Response: DeleteBlobResponse

FieldTypeDescription
chunks_deleteduint32Number of chunks actually deleted (excludes shared chunks still referenced).

GetBlobMeta ​

Get blob metadata (chunk count, total size) without downloading.

HTTP: GET /v1/blobs/{blob_id}/meta

Request: GetBlobMetaRequest

FieldTypeDescription
blob_idstringBlob identifier.

Response: BlobMeta

FieldTypeDescription
blob_idstringBlob identifier.
total_sizeuint64Total size in bytes.
chunk_countuint32Number of chunks.
chunk_idsstring[]Ordered list of SHA-256 chunk hashes.

Types ​

BlobChunk ​

A single blob chunk in a streaming upload/download.

FieldTypeDescription
databytesChunk data (up to 256KB per message).
sequenceuint32Chunk sequence number (0-based, for ordering verification).

BlobMeta ​

Blob metadata.

FieldTypeDescription
blob_idstringBlob identifier.
total_sizeuint64Total size in bytes.
chunk_countuint32Number of chunks.
chunk_idsstring[]Ordered list of SHA-256 chunk hashes.

DeleteBlobRequest ​

Request to delete a blob.

FieldTypeDescription
blob_idstringBlob identifier.

DeleteBlobResponse ​

Response after blob deletion.

FieldTypeDescription
chunks_deleteduint32Number of chunks actually deleted (excludes shared chunks still referenced).

DownloadBlobRequest ​

Request to download a blob.

FieldTypeDescription
blob_idstringBlob identifier returned from UploadBlob.

GetBlobMetaRequest ​

Request for blob metadata.

FieldTypeDescription
blob_idstringBlob identifier.

UploadBlobResponse ​

Response after a complete blob upload.

FieldTypeDescription
blob_idstringUnique blob identifier (hex-encoded composite of chunk hashes).
chunk_idsstring[]Ordered list of SHA-256 chunk hashes (hex, 64 chars each).
total_sizeuint64Total size of the uploaded blob in bytes.
dedup_chunksuint32Number of chunks that were deduplicated (already existed).