Store API
The supervisor exposes a HTTP API for interacting with the store. By default, it
listens on a Unix domain socket at ./store/sock.
Endpoints
GET /
Cat the stream
# Cat all framescurl --unix-socket ./store/sock http://localhost/
# Long poll for new framescurl --unix-socket ./store/sock -H "Accept: text/event-stream" \    "http://localhost/?follow=true"Query Parameters:
follow- Long poll for new frames. Can betrueor a heartbeat interval in millisecondstail- Begin reading from end of streamlast-id- Start reading from specific frame IDlimit- Maximum number of frames to returncontext-id- Filter frames by context IDtopic- Filter frames by topic
Response: newline-delimited JSON frames or SSE stream, based on Accept header.
Use "Accept: text/event-stream" for SSE.
POST /{topic}
Append frame to topic
curl --unix-socket ./store/sock \    -H "xs-meta: $(echo -n '{\"key\":\"value\"}' | base64)" \    -X POST --data "content" \    "http://localhost/topic?ttl=forever"Query Parameters:
ttl- Time-to-live for frame:forever- Never expireephemeral- Not stored; only active subscribers receive ittime:<ms>- Expire after durationhead:<n>- Keep only N most recent frames
context- Context ID for the frame
Headers:
xs-meta- Optional Base64-encoded JSON metadata. Must be encoded using standard Base64 to support Unicode characters.
Response: Frame JSON
GET /{id}
Get frame by id
curl --unix-socket ./store/sock http://localhost/03BCPN2DNQ529QRQKBQCZ4JV4Response: Frame JSON or 404 if not found
DELETE /{id}
Remove frame
curl --unix-socket ./store/sock -X DELETE \    http://localhost/03BCPN2DNQ529QRQKBQCZ4JV4Response: 204 on success
GET /head/{topic}
Get most recent frame for topic
curl --unix-socket ./store/sock http://localhost/head/topicQuery Parameters:
follow- Long poll for new frames on this topiccontext- Context ID to filter by
Response: Most recent frame for topic or 404 if not found
POST /cas
Store content in CAS
curl --unix-socket ./store/sock \    -X POST --data "content" http://localhost/casResponse: Content hash
GET /cas/{hash}
Get content from CAS
curl --unix-socket ./store/sock http://localhost/cas/sha256-hashResponse: Raw content or 404 if not found
POST /import
Import frame as-is
curl --unix-socket ./store/sock \    -H "Content-Type: application/json" \    -X POST --data '{"topic":"test","id":"03BCPN2DNQ529QRQKBQCZ4JV4"}' \    http://localhost/importResponse: Imported frame JSON
GET /version
Get version info
curl --unix-socket ./store/sock http://localhost/versionResponse: Version information JSON
Status Codes
- 200 - Success
 - 204 - Success (no content)
 - 400 - Bad request
 - 404 - Not found
 - 500 - Internal server error