Health
Unauthenticated liveness. Returns database reachability and whether R2 is configured (no secrets).
curl "https://api.bolrach.dev/v1/files/health"Upload flow
POST /v1/files/uploadswith product key, tenant, filename, content type, size.- PUT the file body to the signed URL before it expires.
POST /v1/files/uploads/{id}/completeto scan (EICAR and heuristics in private build).- When
scan_statusis clean, call download-url for a short-lived GET.
Scope files:write. Returns object_id and a presigned upload URL.
curl -X POST "https://api.bolrach.dev/v1/files/uploads" \
-H "Authorization: Bearer bt_your_key_here" \
-H "Content-Type: application/json"
-d '{"product_key":"myapp","tenant_id":"t1","filename":"note.txt","content_type":"text/plain","byte_size":12}'Runs scan after the object lands. Infected objects are quarantined; download stays blocked.
curl -X POST "https://api.bolrach.dev/v1/files/uploads/OBJECT_ID/complete" \
-H "Authorization: Bearer bt_your_key_here" \
-H "Content-Type: application/json"
-d '{}'Scope files:read. Metadata including scan_status.
curl "https://api.bolrach.dev/v1/files/objects/OBJECT_ID" \
-H "Authorization: Bearer bt_your_key_here"Signed download only when scan is clean. Fails closed otherwise.
curl -X POST "https://api.bolrach.dev/v1/files/objects/OBJECT_ID/download-url" \
-H "Authorization: Bearer bt_your_key_here" \
-H "Content-Type: application/json"
-d '{}'Scope files:write. Re-run the malware gate (private build: EICAR + heuristics). Use after a failed scan or if bytes were replaced under the same object id.
curl -X POST "https://api.bolrach.dev/v1/files/objects/OBJECT_ID/scan" \
-H "Authorization: Bearer bt_your_key_here" \
-H "Content-Type: application/json"
-d '{}'Private-build notes
Coordinated launch keeps this plane private. Abuse packs cover EICAR quarantine. Product keys must not share files:write across untrusted tenants.
Machine catalogue: api.bolrach.dev/v1 · openapi.json.