tessera

Applies bytes at the given offset.

PATCH
/api/v1/uploads/{id}

Every chunk but the last must be a whole part

part_size from the POST is a floor, not a suggestion: a chunk that is not the last and carries fewer bytes is refused with 400. The object stores this streams to will not take a part below their own minimum, five mebibytes on S3, so a short chunk cannot be written anywhere and the offset does not move. A client that kept sending one would loop for ever.

The last chunk is exempt, because there is nothing after it to make it whole.

A client that sends declared_bytes in one request never meets this at all.

Errors

400 when a chunk that is not the last is shorter than part_size, 409 when the offset does not match, 404 when there is no such session, 415 when the content type is not the one the specification names.

cookietessera_session<token>

Set by POST /auth/login. A browser sends it automatically; it is HttpOnly, so page scripts cannot read or set it.

id*string

The session

The next bytes

application/offset+octet-stream
  1. body
[index: integer]?integer
Formatint32
Range0 <= value

Response Body

That was the last of it

application/json
  1. response

A share as the API describes it. Never carries the content.

code*string

The retrieval code, as a person reads it.

copy_count*integer

How many times a client reported it being copied.

Formatint32
Range0 <= value
created_at*string

When it was created, RFC 3339.

disabled*boolean

Whether it has been switched off, by an operator or because the scanner found a threat. A disabled share answers 404 to everyone else.

encryption?|

link or password for an end-to-end encrypted share, null for one the server can read.

expires_at?|

When it stops being served, RFC 3339, or null to live until deleted.

files*array<>

Every file this share holds. Empty for text and for a locked share.

has_password*boolean

Whether a password must be presented to retrieve it.

id*string

Stable identifier.

key_salt?|

The salt a password-derived key was stretched with, for password.

kind*string

text, file or link.

language?|

Syntax-highlighting hint.

last_accessed_at?|

When it was last retrieved, RFC 3339.

Answers the question people ask of their own share: has it been picked up yet?

management_token?|

Token that lets an anonymous uploader delete this share.

Shown once, at creation, and only for an anonymous upload. Only its digest is stored. Without it, a mistaken anonymous upload could never be taken back.

path*string

Where the share lives, relative to this instance's origin.

Relative by design. The server does not know what host it is reached through, and guessing wrong behind a reverse proxy produces broken links. The caller already knows the origin it called.

scan_detail?|

The threat's name for infected; encrypted or too_large for skipped.

scan_state?|

The malware scanner's verdict, the most significant across its files: pending, clean, infected, skipped or deferred. null when it was never sent to a scanner. See docs/scanning.md.

scanning*boolean

Whether it is waiting for the malware scanner. Until it is done, downloads answer 423 with Retry-After.

sealed_details?|

The title and a note's language, sealed, on an encrypted share.

size_bytes*integer

Size of the content in bytes.

Formatint64
Range0 <= value
title?|

Display name.

use_count*integer

How many times it has been retrieved.

Counted by the server on the transfer path, so this is the number to trust. The two below are what a client reported.

Formatint32
Range0 <= value
uses_remaining?|

How many retrievals remain, or null for unlimited.

Formatint32
Range0 <= value
view_count*integer

How many times a client reported showing it.

Formatint32
Range0 <= value
curl -X PATCH 'https://example.com/api/v1/uploads/string' \  -H 'Content-Type: application/offset+octet-stream' \  -d '<0>0</0>'
{  "code": "string",  "copy_count": 0,  "created_at": "string",  "disabled": true,  "encryption": "string",  "expires_at": "string",  "files": [    {      "filename": "string",      "position": 0,      "sealed_name": "string",      "size_bytes": 0    }  ],  "has_password": true,  "id": "string",  "key_salt": "string",  "kind": "string",  "language": "string",  "last_accessed_at": "string",  "management_token": "string",  "path": "string",  "scan_detail": "string",  "scan_state": "string",  "scanning": true,  "sealed_details": "string",  "size_bytes": 0,  "title": "string",  "use_count": 0,  "uses_remaining": 0,  "view_count": 0}