Skip to content

Give up an upload

POST
/orgs/{org}/imports/{id}/files/{fid}/release
curl --request POST \
--url https://api.sloose.com/orgs/org_9f3c/imports/imp_4d1a/files/fil_7c2e/release \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "ifDueAt": "example" }'

Releases a reservation the browser will not finish (cancelled, or given up). The row is claimed for deletion at once, a multipart upload is let go in storage, and the sweep deletes whatever landed under the file’s key once the URLs handed out have expired, as a refused commit’s is; the space is free then, and counts until then. Only an upload in progress can be released; a release repeated answers the same. A stored file is removed with DELETE.

org
required

The organisation id the session was issued for. A token for one organisation can never read another.

string
Example
org_9f3c

The organisation id the session was issued for. A token for one organisation can never read another.

id
required

The import id.

string
Example
imp_4d1a

The import id.

fid
required

The file id.

string
Example
fil_7c2e

The file id.

Media typeapplication/json
object
ifDueAt

The deadline the caller saw when it listed the reservation (dueAt). Given, the release happens only if it is still the deadline: every link signed for the upload moves it, so a reservation another tab is sending is not released by a cleanup that read it as stale (FILE_RENEWED).

string
<= 64 characters
Examplegenerated
{
"ifDueAt": "example"
}

The reservation, now released.

Media typeapplication/json
object
id
required
string
state
required
string
Allowed values: reserved committed attached removed deleting
size
required

The stored size in bytes, read from storage at commit; null until then.

integer | null
declaredSize
required
integer
contentType
required

Read from the file’s first bytes by the server, never from its name or the browser’s claim.

string | null
sha256
required

The content’s SHA-256 (base64), as the browser said it. See sha256Verified.

string | null
sha256Verified
required

True where storage checked it (a single signed PUT); false where it is the browser’s claim (a multipart file, whose parts are each verified by their MD5).

boolean
dueAt
required

When the sweep may take the file. For an upload in progress it moves on with every link signed: one that has passed is an upload nobody is sending.

string | null
createdAt
required

When the file was reserved (ISO 8601, UTC): a reservation never finished is told by how old it is.

string
Example
{
"state": "reserved"
}

No bearer, or one that no longer resolves: a session that is unknown or expired (code: AUTH_REQUIRED), or an API token that was revoked or expired (TOKEN_REVOKED, TOKEN_EXPIRED), whose organisation is gone (ORG_NOT_FOUND) or whose member or user row is (MEMBERSHIP_GONE).

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

The role or session. Like every route behind a session: a session signed in but in no organisation is refused code: NO_ORG, a banned person code: BANNED, and a closed organisation code: ORG_CLOSED.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

No such import or file.

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

The file is stored, not an upload in progress (FILE_NOT_RESERVED), or its deadline has moved since the caller saw it (FILE_RENEWED).

Media typeapplication/json

The error envelope every non-2xx answer uses.

object
error
required

Human-readable explanation.

string
code

Machine-readable reason. Absent on a few legacy 400s.

string
key
additional properties
Examplegenerated
{
"error": "example",
"code": "example"
}

The restore switch is on (code: MAINTENANCE): every route but /health and /robots.txt is refused before anything is read, except the operator’s own POST /staff/people/{id}/delete with the ADMIN_TOKEN. Sloose is down for maintenance. Please try again in a few minutes.

Media typeapplication/json
object
error
required
string
code
required
string
Allowed value: MAINTENANCE
Example
{
"code": "MAINTENANCE"
}
Retry-After
integer

Seconds until asking again is worth it (300 while the switch is on).

Report a problem with this page

sloose.com