DIN 0815/S · PS-06
File Storage
Shared blob store — buckets, content-addressed objects, and short-lived signed download links.
One place for the files modules produce — invoice PDFs, product images, report exports, uploaded documents — instead of each writing to its own disk and reinventing checksums, metadata and links. Objects are addressed by bucket and key, and every one carries its size and SHA-256 alongside a content type and free-form metadata. A module can mint a short-lived HMAC-signed URL and hand it straight to a browser: it serves the bytes without a session, always as an attachment under a sandbox CSP, and a tampered or expired link is refused. Bytes live in SQLite as BLOBs by default, so there is nothing else to run.
Responsibilities
- Buckets and objects addressed by bucket + key, with free-form metadata
- Content addressing — SHA-256 and size recorded for every object
- Short-lived HMAC-signed download URLs that need no session
- Downloads always served as attachments, so stored bytes cannot execute
- Object bytes in SQLite by default; an S3-compatible backend behind the same API
API surface
- PUT /api/objects/:bucket/:key · GET /api/objects/:bucket/:key
- GET /api/objects/:bucket/:key/meta
- POST /api/objects/:bucket/:key/sign
- GET /api/download?bucket=&key=&expires=&sig=
- GET/POST /api/buckets · DELETE /api/objects/:bucket/:key
CONSUMED BY Any module that produces or stores a file. A Platform Service never depends on a Business Module.