Artifacts
Uploading files and folders, reading what is there, and revoking. Every upload passes the path rules, size caps and secret scan before anything is stored.
suli upload
Section titled “suli upload”Checks every path against the rules (no .., no paths outside the folder, nothing on the denylist such as .env*, .ssh/, keys and credential files), checks the sizes (25 MB a file; 100 MB and 500 files a folder), then sends each file and commits. A secret found by the scan refuses the upload, naming the file and line; --override uploads it anyway and records your reason.
suli upload <path> [--title <text>] [--item <itm_…>] [--board <brd_…>] [--entry <path>] [--expires <YYYY-MM-DD>] [--override <reason>]| argument | meaning |
|---|---|
<path> |
A file or a folder |
| flag | type | default | meaning |
|---|---|---|---|
--title <text> |
string | the file or folder name | What the item is called |
--item <itm_…> |
string | — | Upload as a new version of this item |
--board <brd_…> |
string | — | Scope it to a board (visible only to you until board access arrives) |
--entry <path> |
string | index.html, then README.md, then the first file | The file a folder opens on |
--expires <YYYY-MM-DD> |
date | — | Delete it on this date (the start of that day, UTC) |
--override <reason> |
string | — | Upload despite a secret-scan finding; your reason is recorded |
Who may run it
- A person: a member of the workspace.
- An agent token: refused.
- Agents reach Superlibrary from a later release; an agent token is refused today.
Calls POST /api/v1/uploads, PUT /api/v1/uploads/:id/files, POST /api/v1/uploads/:id/override, POST /api/v1/uploads/:id/commit
Prints the item URL (and with –json the item id, version, SHA-256, type and size).
Exit status 0 on success. 1 when:
- a path is refused or a size is over its cap
- the secret scan finds something and –override is not given
- a symbolic link points outside the folder
- there is no usable credential, or the server refuses it (401) or the act (403), or answers any other error
Example
suli upload report.mdsuli upload ./site --title "Launch page" --entry index.htmlsuli upload notes.md --item itm_0123456789abcdefsuli get
Section titled “suli get”Shows the item, its provenance and its versions. With --embed, also mints a signed viewer URL for one version, which works for five minutes (and is recorded as a view).
suli get <item> [--embed] [--version <n>]| argument | meaning |
|---|---|
<item> |
The item id (itm_…) |
| flag | type | default | meaning |
|---|---|---|---|
--embed |
boolean | — | Also mint a 5-minute signed viewer URL |
--version <n> |
integer | — | The version for –embed |
Who may run it
- A person: a member of the workspace.
- An agent token: refused.
- Agents reach Superlibrary from a later release; an agent token is refused today.
Calls GET /api/v1/items/:id, POST /api/v1/items/:id/embed
Prints the item and its versions.
Exit status 0 on success. 1 when:
- the item does not exist or you cannot see it (404)
- it is revoked or expired (410)
- there is no usable credential, or the server refuses it (401) or the act (403), or answers any other error
Example
suli get itm_0123456789abcdefsuli get itm_0123456789abcdef --embed --version 2suli revoke
Section titled “suli revoke”Revokes at once: a viewer URL already handed out stops working immediately. Only the uploader or an owner of the workspace may.
suli revoke <item> [--version <n>] [--reason <text>]| argument | meaning |
|---|---|
<item> |
The item id (itm_…) |
| flag | type | default | meaning |
|---|---|---|---|
--version <n> |
integer | — | Revoke only this version |
--reason <text> |
string | — | Why; recorded when the whole item is revoked, so not allowed with –version |
Who may run it
- A person: the person who uploaded it, or an owner of the workspace.
- An agent token: refused.
- Agents reach Superlibrary from a later release; an agent token is refused today.
Calls POST /api/v1/items/:id/revoke, POST /api/v1/items/:id/versions/:n/revoke
Prints “Revoked.”.
Exit status 0 on success. 1 when:
- you are not the uploader or an owner (403)
- there is no usable credential, or the server refuses it (401) or the act (403), or answers any other error
Example
suli revoke itm_0123456789abcdef --reason "posted by mistake"suli revoke itm_0123456789abcdef --version 2