Downloads and public delivery
BigFS can stream an object to an authorized caller, issue a short-lived one-time download grant, or resolve a public object route.
Routes
| Route | Authorization | Required input | Result |
|---|---|---|---|
ANY /v1/download/issue |
Consumer token and bucket membership | id, or key |
JSON grant for a one-time download. |
ANY /v1/download/link |
No token | id, key |
Binary file stream; consumes the grant. |
ANY /v1/download/pull |
Consumer token and bucket membership | id, or key |
Binary file stream. |
ANY /v1/download/redir |
Consumer token and bucket membership | id, or key |
JSON object pointer data. |
ANY /v1/public/redir/<bucket>/<name> |
No token | Route path, or bucket and name |
HTTP redirect to the resolved object pointer. |
Select an object
The download routes select an object using one of these forms:
| Field set | Behavior |
|---|---|
id |
Asset UUID. The service derives its bucket, key, and version. |
key |
Key UUID. Optionally send version; a non-positive or omitted value selects the current resolved version. |
When using key, bucket is not used to select the target. The selected
bucket must be accessible to the caller for issue, pull, and redir.
Issue and consume a one-time download grant
/v1/download/issue creates a grant with a fixed 120-second lifetime. The
success response exposes a ready-to-use grant.url; it contains both grant
credentials and should be treated as a secret. The grant can be consumed once
through /v1/download/link without an authorization header.
curl -sS https://api.bigfs.m7.org/v1/download/issue \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"id":"ASSET_UUID"}'
{
"status": 1,
"data": {
"grant": {
"id": "DOWNLOAD_GRANT_UUID",
"key": "DOWNLOAD_GRANT_KEY",
"expires_in": 120,
"issued_at": "2026-08-19T00:00:00+00:00",
"expires_at": "2026-08-19T00:02:00+00:00",
"consume": true,
"path": "/v1/download/link?id=DOWNLOAD_GRANT_UUID&key=DOWNLOAD_GRANT_KEY",
"url": "https://api.bigfs.m7.org/v1/download/link?id=DOWNLOAD_GRANT_UUID&key=DOWNLOAD_GRANT_KEY"
},
"target": {
"asset_id": "ASSET_UUID",
"bucket_id": "BUCKET_UUID",
"key_id": "KEY_UUID",
"key_name": "reports/latest.pdf",
"version": 1,
"consume": true
}
}
}
Retrieve the file with the returned URL or with id and key as query
parameters. The route responds with Content-Disposition: attachment and the
file bytes. A missing, expired, invalid, or already-consumed grant fails.
Pull a file or retrieve pointer data
/v1/download/pull streams the selected file with an attachment filename.
/v1/download/redir returns JSON pointer data for the selected target. Both
require a consumer token and bucket membership.
curl --location --remote-name \
-H 'Authorization: Bearer ACCESS_TOKEN' \
'https://api.bigfs.m7.org/v1/download/pull?id=ASSET_UUID'
Public redirect
/v1/public/redir/<bucket>/<name> accepts no token. It resolves the bucket
and object name from the path and sends an HTTP redirect to the first available
object pointer. For example:
https://api.bigfs.m7.org/v1/public/redir/public-assets/releases/app.zip
The equivalent request fields are bucket and name. When no pointer can be
resolved, the route returns HTTP 404 with a JSON error envelope.