Blob Storage
Blob storage methods provide content-addressable storage for JSON data, enabling efficient data sharing between components and across workflow steps. These methods support the bidirectional communication pattern allowing components to store and retrieve data during execution.
Overview
The blob storage methods provide a complete storage interface:
blobs/put
- Store data and receive content-addressable IDblobs/get
- Retrieve data by blob ID
These methods are called by component servers during execution, not by the runtime directly.
Blob Storage Sequence
blobs/put Method
Method Name: blobs/put
Direction: Component Server → Runtime
Type: Request (expects response)
- Schema Viewer
- Schema Source
Loading ....
{
"description": "Sent from the component server to the Stepflow to store a blob with the provided content.",
"type": "object",
"properties": {
"data": {
"$ref": "#/$defs/Value"
},
"blob_type": {
"$ref": "#/$defs/BlobType"
}
},
"required": [
"data",
"blob_type"
]
}
- Schema Viewer
- Schema Source
Loading ....
{
"description": "Sent from the Stepflow back to the component server with the ID of the stored blob.",
"type": "object",
"properties": {
"blob_id": {
"$ref": "#/$defs/BlobId"
}
},
"required": [
"blob_id"
]
}
Request Example
{
"jsonrpc": "2.0",
"id": "put-blob-001",
"method": "blobs/put",
"params": {
"data": {
"processed_records": [
{"id": "record_1", "data": {"name": "John", "status": "active"}}
],
"metadata": {
"timestamp": "2024-01-15T10:30:00Z",
"version": "1.2.3"
}
},
"blob_type": "Json"
}
}
Response Example
{
"jsonrpc": "2.0",
"id": "put-blob-001",
"result": {
"blob_id": "sha256:a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
}
}
Content-Addressable Properties
- Deterministic IDs: Identical data always produces the same blob_id
- SHA-256 based: Uses cryptographic hash for integrity and uniqueness
- Blob ID format:
sha256:<64-character-hexadecimal-hash>
blobs/get Method
Method Name: blobs/get
Direction: Component Server → Runtime
Type: Request (expects response)
- Schema Viewer
- Schema Source
Loading ....
{
"description": "Sent from the component server to the Stepflow to retrieve the content of a specific blob.",
"type": "object",
"properties": {
"blob_id": {
"description": "The ID of the blob to retrieve.",
"$ref": "#/$defs/BlobId"
}
},
"required": [
"blob_id"
]
}
- Schema Viewer
- Schema Source
Loading ....
{
"description": "Sent from the Stepflow back to the component server with the blob data and metadata.",
"type": "object",
"properties": {
"data": {
"$ref": "#/$defs/Value"
},
"blob_type": {
"$ref": "#/$defs/BlobType"
}
},
"required": [
"data",
"blob_type"
]
}
Request Example
{
"jsonrpc": "2.0",
"id": "get-blob-001",
"method": "blobs/get",
"params": {
"blob_id": "sha256:a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
}
}
Response Example
{
"jsonrpc": "2.0",
"id": "get-blob-001",
"result": {
"data": {
"processed_records": [
{"id": "record_1", "data": {"name": "John", "status": "active"}}
],
"metadata": {
"timestamp": "2024-01-15T10:30:00Z",
"version": "1.2.3"
}
},
"blob_type": "Json"
}
}