Zum Inhalt springen

REST-API: Schemas

Als Markdown ansehen

Die Schemas aus dem OpenAPI-Dokument des Daemons, nach Namen sortiert. Die TypeScript-Typen von @pithyx/api-client werden aus demselben Dokument erzeugt.

Confirms a sub or unsub. For sub, the snapshots of matching topics follow.

Feld Typ Pflicht Beschreibung
id string ja
type "ack" ja
requestId string ja

Which certificate the web interface and FTPS present.

Typ: "authority", "custom"

Feld Typ Pflicht Beschreibung
url string ja https://host/owner/repository.git, or for a private catalog git@host:owner/repository.git.

Every installed app for administrators: the snapshot and every event of apps/admin.

Feld Typ Pflicht Beschreibung
pool null | string ja The app pool, or null before the first install.
apps AppDetails[] ja Sorted by id.

RFC 9457 problem details as returned by every failing API call. The detail text is an English fallback; clients show the translation of the error code instead.

Feld Typ Pflicht Beschreibung
type string ja
title string ja
status integer (int32) ja
detail string ja
code ErrorCode ja
params map of object ja
requestId string ja

Who may use an app after its first install: everybody (a grant to the built-in group) or administrators only.

Typ: "everybody", "admins"

The per-user topic apps/<id>/context: what the daemon decides about an app for the subscriber, who may use the app (only such a user can subscribe). Its subscription is also the window lease (A15): while a desktop of the user is subscribed, the app is in use.

Feld Typ Pflicht Beschreibung
version string ja The installed version.
permissions string[] ja The permissions of the manifest that no administrator revoked; the app sees them as permissionsChange.
logLevel "info", "debug" ja Whether an app’s debug log entries reach the daemon; info, warn and error always do.
backend null | object ja The app’s backend: the state of its containers and the names of its endpoints.
storage object[] ja The storage requests of the manifest with their state for the user (storageChange).

An installed app for administrators (topic apps/admin and GET /api/apps).

Feld Typ Pflicht Beschreibung
id string ja The app id.
version string ja The installed version.
source string ja sideload (a package file) or catalog.
enabled boolean ja Whether users can open it.
manifest JsonElement ja The installed manifest.
permissions AppPermissionState[] ja Each permission of the manifest with whether it is granted.
uid integer (int64) ja The app’s own uid.
sha256 string ja SHA-256 of the installed package file.
installedAt string (date-time) ja The first install (UTC).
updatedAt string (date-time) ja The last install or update (UTC).
busy boolean ja An install, update or removal runs.
available boolean ja Its data is reachable: the app pool is imported, unlocked and mounted.
logLevel AppLogLevel ja Whether its debug log entries reach the daemon.
storage AppStorageMapping[] ja The folders mapped to the storage requests of its manifest; a request without one is not mapped.
catalog null | string ja The catalog it was installed or last updated from; null for a sideload.
updatePolicy null | UpdatePolicy ja Its own update policy; null follows the box’s.
previousVersion null | string ja The version before its last update, which a rollback restores with its data; null when there is none.

How the desktop looks for the user on every device. The theme (light, dark) is a choice of each device.

Feld Typ Pflicht Beschreibung
accent string ja One of the accent presets: petrol, ocean, indigo, plum, moss, graphite.
wallpaper string ja boxes (the Pithyx boxes) or plain.

A file or folder an app reaches, with whether the app may write it.

Feld Typ Pflicht Beschreibung
name string ja Name within its folder.
kind FileKind ja File, folder, symlink or another kind.
size integer (int64) ja Bytes for files, 0 for folders.
modified string (date-time) ja Last change of the content, UTC.
writable boolean ja The app holds files.write (or the storage is mapped read and write) and the user may write there.

An app’s copy, move or delete: as FileOperationRequest, with each place a shared folder or a storage request.

Feld Typ Pflicht Beschreibung
kind FileOperationKind ja copy, move or delete.
items null | AppFileRef[] nein The entries to work on, at most 1000. Leave out when AllIn is given.
target null | AppFileRef nein An entry or folder of an app’s file operation, in a shared folder or a storage request of its manifest.
onConflict null | ConflictPolicy nein For copy and move; fail when left out.
permanent boolean nein For delete: remove for good instead of moving to the shared folder’s recycle bin.
allIn null | AppFolderSelection nein Every entry of an app’s folder except some names.

An entry or folder of an app’s file operation, in a shared folder or a storage request of its manifest.

Feld Typ Pflicht Beschreibung
share null | string nein The shared folder’s id, as the app got it from files/shares.
storage null | string nein The id of a storage request of the manifest.
path null | string nein The path relative to the shared folder or the mapped folder.

A short-lived address of one file, usable without the desktop’s session.

Feld Typ Pflicht Beschreibung
url string ja Path on the box with ?pithyx-token=; supports range requests.
expiresAt string (date-time) ja When it stops working (UTC).

Body of POST /api/app/files/url.

Feld Typ Pflicht Beschreibung
path string ja The file.
share null | string nein The shared folder’s id, or null.
storage null | string nein The id of a storage request, or null.

One page of a folder, relative to its location.

Feld Typ Pflicht Beschreibung
path string ja The folder (“” for the location’s root).
folderId string ja Stable id of the folder, also after a rename.
total integer (int32) ja Entries in the folder when the page was read.
entries FileEntry[] ja This page, in the requested order.
nextCursor null | string ja Pass as cursor for the next page; null on the last page.
topic string ja WebSocket topic with live changes of this folder, for the desktop’s files.watch; never sent to the app.

Every entry of an app’s folder except some names.

Feld Typ Pflicht Beschreibung
folder AppFileRef ja The folder whose entries are meant.
except null | string[] nein Names left out, at most 1000.

Who may use an app. Administrators only.

Feld Typ Pflicht Beschreibung
grants SubjectGrant[] ja The grants of users and groups on it (level allow); the editor changes these. The built-in group users stands for everybody.
users AppUserAccess[] ja Every user with whether it may use the app in the end, administrators and deactivated users included.
Feld Typ Pflicht Beschreibung
grants SubjectGrant[] ja Every grant on the app the users and groups should have (level allow); the others go.

Body of POST /api/app/files/handles: a file the user handed to the window in a dialog.

Feld Typ Pflicht Beschreibung
share string ja The shared folder’s id.
path string ja The one file; the window may read it (needs files.read), or also write it.
write boolean nein Whether the window may write it (needs files.write).

The apps the subscriber may use, sorted by id: the snapshot and every event of apps.

Feld Typ Pflicht Beschreibung
apps object[] ja Enabled apps the user has a grant for; every enabled app for administrators.
Feld Typ Pflicht Beschreibung
entries AppLogEntry[] ja At most 100 entries per request.
Feld Typ Pflicht Beschreibung
level LogLevelName ja debug, info, warn or error.
message string ja At most 4000 characters; longer ones are cut.
data null | map of string nein At most 20 fields of at most 1000 characters each.

Whether an app’s debug log entries reach the daemon; info, warn and error always do.

Typ: "info", "debug"

Feld Typ Pflicht Beschreibung
level AppLogLevel ja Whether the app’s debug log entries reach the daemon.
Feld Typ Pflicht Beschreibung
accepted integer (int32) ja Entries stored.
dropped integer (int32) ja Entries over the app’s rate limit, not stored.

A button of an app’s notification.

Feld Typ Pflicht Beschreibung
id string ja Comes back to the app when the user clicks it; 1 to 64 characters, unique in the notification.
label string ja Plain text from the app, 1 to 40 characters.

Typ: "info", "success", "warning", "error", null

Body of POST /api/notifications/app: a notification a core app sends through the SDK.

Feld Typ Pflicht Beschreibung
app string ja Id of the core app (org.pithyx.*); third-party apps send theirs to /api/app/notifications.
title string ja Plain text from the app, at most 200 characters.
body null | string nein Plain text from the app, at most 1000 characters.
tone null | NotificationTone nein Defaults to info.

Body of POST /api/app/notifications: the SDK’s notify of a third-party app.

Feld Typ Pflicht Beschreibung
title string ja Plain text, 1 to 200 characters.
body null | string nein Plain text, at most 1000 characters.
level null | AppNotificationLevel nein Defaults to info.
actions null | AppNotificationAction[] nein At most 2 buttons.
data object nein Any JSON the app gets back with a click, at most 4096 characters.
tag null | string nein Replaces the app’s earlier notification with the same tag for this user; 1 to 64 characters.

What installing a checked package does.

Typ: "install", "update", "reinstall", "downgrade"

A checked package, kept for 15 minutes for its installation by the administrator who uploaded it.

Feld Typ Pflicht Beschreibung
packageId string ja Names it for the install.
expiresAt string (date-time) ja When it is discarded (UTC).
id string ja The app id.
version string ja The version in the package.
manifest JsonElement ja The whole manifest (pithyx.json).
action AppPackageAction ja What installing it does.
installedVersion null | string ja The installed version, if the app is installed.
addedPermissions string[] ja Permissions the package asks for that the installed version did not (all of them for an install).
removedPermissions string[] ja Permissions the installed version had that the package no longer asks for.
pool null | string ja The app pool, or null before the first app is installed (the install must name one then).
fileCount integer (int32) ja Regular files in the package.
unpackedBytes integer (int64) ja Their sizes together.
packageBytes integer (int64) ja The size of the package file.
sha256 string ja SHA-256 of the package file, lowercase hex.
suggestedAccess AppAccess ja Who should use the app after an install: administrators only when it asks for elevated rights, root in a container or directory.read, everybody otherwise. An install without access takes it.
catalog null | string nein The catalog the package comes from; null for an uploaded file (a sideload, unverified).
keptData boolean nein For an install: an earlier installation was removed with “Keep the data”, and the app gets its data and its user id again.
Feld Typ Pflicht Beschreibung
permissions AppPermissionState[] ja Permissions of the app’s manifest with whether the app keeps them; the others stay as they are.
Feld Typ Pflicht Beschreibung
permission string ja For example notifications.
granted boolean ja False after an administrator revoked it.

Body of POST /api/app/files/rename.

Feld Typ Pflicht Beschreibung
path string ja The entry to rename.
name string ja The new name in the same folder.
share null | string nein The shared folder’s id, or null.
storage null | string nein The id of a storage request, or null.

A shared folder the user can use, as an app with files.shares sees it: never its place on the host.

Feld Typ Pflicht Beschreibung
id string ja The location { share: id }.
name string ja Name shown to users.
access ShareAccess ja The user’s access: read or readWrite.
unavailable null | string ja Why its files cannot be reached now (poolMissing, poolUnavailable, notMounted), or null.
kind ShareKind nein A shared folder, or the user’s own home (home, D348). Apps never get other users’ homes.

How an app may use a folder mapped to one of its storage requests.

Typ: "read", "readWrite"

The keys an app stored for the user.

Feld Typ Pflicht Beschreibung
keys string[] ja Sorted.

A folder in a shared folder that an administrator mapped to one storage request of an app.

Feld Typ Pflicht Beschreibung
storageId string ja The id of the request in the manifest.
shareId integer (int64) ja The shared folder.
path string ja The folder relative to the shared folder’s root, empty for the root itself.
access AppStorageAccess ja Read-only, or read and write when the request asks for it.
Feld Typ Pflicht Beschreibung
shareId integer (int64) ja The shared folder.
access AppStorageAccess ja Read-only, or read and write when the storage request asks for it.
path null | string nein An existing folder in it, relative to its root; empty or missing for the root.

A value an app stores for the user; JSON null when there is none.

Feld Typ Pflicht Beschreibung
value JsonElement ja Any JSON, at most 64 KB.

A one-time ticket for one WebSocket to the app’s backend, as ?pithyx-ticket=.

Feld Typ Pflicht Beschreibung
ticket string ja Works once, within 30 seconds.
expiresAt string (date-time) ja When it stops working (UTC).

Body of POST /api/app/tickets.

Feld Typ Pflicht Beschreibung
endpoint string ja A backend endpoint of the app’s manifest, for example api.

A token for one app, user, session and window.

Feld Typ Pflicht Beschreibung
token string ja Send as Authorization: Bearer; never log or store it.
expiresAt string (date-time) ja When it stops working (UTC); ask for a new one before.

What a token is for.

Typ: "host", "backend", "ticket", "file"

Body of POST /api/apps/{appId}/tokens.

Feld Typ Pflicht Beschreibung
kind AppTokenKind ja host for the daemon’s API for apps (kept by the desktop), backend for the app’s backend.
instance string ja The window instance: 1 to 64 letters, digits, dashes and underscores.

Body of the recycle bin calls of /api/app/files/trash.

Feld Typ Pflicht Beschreibung
share string ja The shared folder’s id.
ids null | integer (int64)[] nein The items; all items of the bin for empty.
onConflict null | ConflictPolicy nein For restore; rename when left out.

A newer version of an installed app that a catalog offers.

Feld Typ Pflicht Beschreibung
id string ja The app.
installedVersion string ja The installed version.
version string ja The newest version for this box.
catalog string ja The catalog that offers it.
addedPermissions string[] ja Permissions the new version asks for that the installed one did not.
elevated boolean ja It asks for root in a container or elevated rights it did not have.
policy UpdatePolicy ja The app’s own policy, or the box’s.
automatic boolean ja The next check installs it on its own: the policy is automatic and nothing new is asked for.
Feld Typ Pflicht Beschreibung
policy null | UpdatePolicy ja The app’s own update policy; null follows the box’s.

One user’s effective access to an app.

Feld Typ Pflicht Beschreibung
userId integer (int64) ja The user’s id.
username string ja Login name.
displayName null | string ja Name shown, if set.
administrator boolean ja Administrators use every app.
disabled boolean ja Deactivated users use none.
allowed boolean ja Whether the user may use the app: by its own grant, one of its groups’, or as an administrator.

Body of POST /api/app/files/versions/restore.

Feld Typ Pflicht Beschreibung
share string ja The shared folder’s id.
path string ja The file or folder to bring back.
snapshot string ja The version’s snapshot, as listed.
overwrite boolean nein Replace the current entry instead of restoring next to it.

The box’s certificate authority.

Feld Typ Pflicht Beschreibung
root CertificateInfo ja The root that devices trust; download it from /api/system/tls/root-ca.crt.
intermediate CertificateInfo ja The intermediate that signs every certificate; it is renewed a year before it ends.
restricted boolean ja Name Constraints limit what the authority may sign.
domains string[] ja The DNS suffixes it may sign, each with every name below it; empty when unrestricted.
addressRanges string[] ja The address ranges it may sign; empty when unrestricted.

The newest version of the box’s channel when it is newer than the installed one. Installable: False when the box is older than MinimumVersion and needs a version in between first.

Feld Typ Pflicht Beschreibung
version string ja
minimumVersion string ja
changelog string ja
size integer (int64) ja
publishedAt string (date-time) ja
installable boolean ja

A part of the configuration that can be restored on its own.

Typ: "users", "sharedFolders", "storage", "system", "certificates", "apps", "reverseProxy"

A backup the daemon decrypted and checked, kept for a restore for 15 minutes.

Feld Typ Pflicht Beschreibung
restoreId string ja Names the checked backup in the restore request.
createdAt string (date-time) ja When the backup was created, UTC.
hostName string ja The host name of the box that created it.
version string ja The Pithyx version that created it.
categories BackupCategory[] ja What it holds and can restore.
users integer (int32) ja Users in the backup.
groups integer (int32) ja Groups in the backup, without the built-in one.
sharedFolders integer (int32) ja Shared folders in the backup.

How a bond uses its cards.

Typ: "activeBackup", "lacp", "balanceAlb"

Feld Typ Pflicht Beschreibung
members string[] ja The network cards in the bond, at least one; none of them has its own configuration.
mode BondMode ja How the bond uses its cards.
primary null | string nein For active-backup: the card that carries the traffic while its link is up.
lacpRate LacpRate nein For LACP: how often the partners exchange their state.

A catalog of the box.

Feld Typ Pflicht Beschreibung
key integer (int64) ja The box’s number for it, which the catalog endpoints take.
id null | string ja The id from its catalog.json, or null before a custom catalog’s first fetch.
kind CatalogKind ja The project’s official or community catalog, or a custom one.
url string ja The repository.
enabled boolean ja Switched on.
verified boolean ja Its index must carry a signature by a key built into the box (the project’s catalogs).
name null | map of string ja Its name by language from catalog.json, once fetched.
description null | map of string ja Its description by language, if it has one.
homepage null | string ja Its homepage, if it names one.
sshPublicKey null | string ja The deploy key the box made for an SSH URL; add it to the repository with read access.
hostKey null | string ja The server’s host key the box pinned (for hosts other than GitHub, whose keys are built in).
hasRegistryToken boolean ja A read token for its private images is set (never sent back).
status CatalogStatus ja Off, new, ok or failed.
checkedAt null (date-time) | string (date-time) ja When the last fetch ended.
verifiedAt null (date-time) | string (date-time) ja When a fetch last verified the copy.
commit null | string ja The commit of the verified copy.
sequence null (int64) | integer (int64) ja The verified index’s sequence on the box’s channel.
appCount integer (int32) ja How many apps the verified copy lists.
errorCode null | string ja Why the last fetch failed.
errorParams null | JsonElement ja The error’s params.
busy boolean ja A fetch runs.

Whose catalog it is: the project’s two (signed, keys built in) or one an administrator added (unverified).

Typ: "official", "community", "custom"

A catalog’s state for the Store’s settings.

Typ: "off", "new", "ok", "failed"

One certificate as Settings shows it.

Feld Typ Pflicht Beschreibung
subject string ja The subject’s distinguished name.
issuer string ja The issuer’s distinguished name.
names string[] ja The DNS names and addresses it covers.
notBefore string (date-time) ja The start of its validity.
notAfter string (date-time) ja The end of its validity.
fingerprint string ja SHA-256 as hex pairs with colons.

The key of a certificate the authority issues.

Typ: "ecdsa", "rsa"

A message from the client: sub or unsub for a topic or pattern.

Feld Typ Pflicht Beschreibung
type "sub", "unsub" ja
id string ja Chosen by the client; echoed in the ack, snapshots and errors that answer this message.
topic null | string nein Topic name or pattern with + and #. A message without one is answered with an error.

Typ: "fail", "skip", "overwrite", "rename", null

Feld Typ Pflicht Beschreibung
deviceId string ja

A new authority; every device has to trust its root again.

Feld Typ Pflicht Beschreibung
restricted boolean ja Limit the authority to local names and private addresses (recommended).
domains string[] ja With Restricted: DNS suffixes besides the suggested ones, such as a domain of your own.
Feld Typ Pflicht Beschreibung
password string ja The backup password: needed to restore, never stored. The same rules as for an account password.

A certificate of your own for the web interface and FTPS.

Feld Typ Pflicht Beschreibung
certificatePem string ja The certificate, followed by its intermediates, in PEM.
privateKeyPem string ja Its private key in PEM (PKCS #8, PKCS #1 or SEC 1), unencrypted.

Typ: "real", "simulated"

Feld Typ Pflicht Beschreibung
name string ja Full dataset name, for example tank/pithyx/shares/media.
pool string ja The pool it belongs to.
type string ja filesystem or volume.
usedBytes integer (int64) ja Space used by the dataset and its children.
availableBytes integer (int64) ja Space available to it.
referencedBytes integer (int64) ja Data the dataset references itself.
mountPoint null | string ja Mount point of a file system, if it has one.
mounted boolean ja True while the file system is mounted.
encryption string ja Encryption algorithm, or off.
keyStatus null | string ja available or unavailable for encrypted datasets, otherwise null.
encryptionRoot null | string ja The dataset whose key unlocks this one, if encrypted.
quotaBytes null (int64) | integer (int64) ja Limit for the dataset with its children and snapshots, or null for none.
reservationBytes null (int64) | integer (int64) ja Space guaranteed to the dataset with its children and snapshots, or null for none.
compression null | string ja Compression algorithm, for example lz4, zstd or off.
recordSizeBytes null (int64) | integer (int64) ja Largest block of a file system; null for a volume.
volumeSizeBytes null (int64) | integer (int64) ja Size of a volume; null for a file system.
volumeBlockSizeBytes null (int64) | integer (int64) ja Block size of a volume; null for a file system.
snapshotsUsedBytes integer (int64) ja Space only its snapshots hold.

A Debian package apt-get --simulate upgrade would install.

Feld Typ Pflicht Beschreibung
name string ja The package.
from null | string ja The installed version; null for a package the upgrade adds.
to string ja The version it would install.
security boolean ja Whether it comes from a security archive (Debian-Security:13/stable-security).

The Debian updates apt offers; the kernel and ZFS never come from Debian.

Feld Typ Pflicht Beschreibung
count integer (int32) ja
security integer (int32) ja
packages DebianUpdate[] ja

An app shortcut or a sticky note on the desktop, shared across the user’s devices.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id of the item.
kind DesktopItemKind ja What the item is.
app null | string ja Shortcuts: the id of the app it opens.
name null | string ja Shortcuts: the label the user gave it, or null for the app’s name in the user’s language.
text null | string ja Notes: the text.
column integer (int32) ja Grid cell of the item, counted from the top left corner of the desktop.
row integer (int32) ja Grid row of the item.
version integer (int64) ja Increments with every change. Send it as If-Match: "n" with the next change of this item.

A change of one item. Fields left out (or null) stay as they are.

Feld Typ Pflicht Beschreibung
name null | string nein Shortcuts: the new label; an empty string goes back to the app’s name.
text null | string nein Notes: the new text.
column null (int32) | integer (int32) nein New grid column.
row null (int32) | integer (int32) nein New grid row.

Typ: "shortcut", "note"

Feld Typ Pflicht Beschreibung
layout null | JsonElement ja The saved layout of this device (schema in the desktop, version 1), or null.
layoutVersion integer (int64) ja Increments with every save of this device’s layout, 0 without one. Send it as If-Match: "n" with the next save.
preferences WindowPreference[] ja Window preferences of the user for every app, shared across devices.
appearance Appearance ja Accent color and wallpaper of the user, the same on every device.

Another device of the user with a saved layout.

Feld Typ Pflicht Beschreibung
deviceId string ja Pass to POST /api/desktop/layout/copy.
browser null | string ja Browser product name from the User-Agent, if known.
os null | string ja Operating system name from the User-Agent, if known.
windowCount integer (int64) ja Windows in the layout.
updatedAt string (date-time) ja When the layout was last saved (UTC).
screenWidth null (int64) | integer (int64) ja Width of the desktop the layout was saved on, in CSS pixels, if the layout says.
screenHeight null (int64) | integer (int64) ja Its height.

A group of the box, for an app with directory.read. The built-in group is left out.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id (the group’s Linux gid).
name string ja The group name.
description string ja Free text, may be empty.

A user of the box, for an app with directory.read. Deactivated users are left out.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id.
name string ja The user name.
displayName null | string ja The name to show, if set.
groups integer (int64)[] ja Ids of the user’s groups, without the built-in group every user is in.
Feld Typ Pflicht Beschreibung
id string ja Stable across reboots and device renames: wwn-..., else serial-..., else path-....
name string ja Kernel name, for example sda or nvme0n1. Can change between boots.
path string ja Device node, for example /dev/sda.
serial null | string ja Serial number as reported by the drive, if any.
wwn null | string ja World wide name, if any.
model null | string ja Model name, if any.
vendor null | string ja Vendor, if any.
sizeBytes integer (int64) ja Capacity in bytes.
rotational boolean ja True for spinning disks.
transport null | string ja Bus, for example sata, nvme or usb; null for virtual disks.
removable boolean ja True for removable media.
readOnly boolean ja True when the kernel exposes the disk read-only.
partitions Partition[] ja Partitions in on-disk order.

Snapshot of storage/disks and response of GET /api/disks.

Feld Typ Pflicht Beschreibung
disks object[] ja

Event of storage/disks: disks that appeared or changed, and ids of disks that disappeared.

Feld Typ Pflicht Beschreibung
upserts object[] ja
removals string[] ja

Typ: "app.app.busy", "app.app.no_previous", "app.app.not_found", "app.backend.endpoint_unknown", "app.backend.missing", "app.backend.start_failed", "app.backend.storage_unavailable", "app.backend.unavailable", "app.backend.unsupported", "app.compose.key_unsupported", "app.compose.reference_unknown", "app.compose.right_missing", "app.compose.right_unused", "app.compose.storage_mismatch", "app.compose.value_invalid", "app.compose.yaml_invalid", "app.docker.unavailable", "app.elevated.unsupported", "app.icon.invalid", "app.image.mismatch", "app.image.unavailable", "app.manifest.cron_invalid", "app.manifest.duplicate", "app.manifest.id_invalid", "app.manifest.id_reserved", "app.manifest.invalid_json", "app.manifest.pithyx_invalid", "app.manifest.reference_unknown", "app.manifest.schema_violation", "app.manifest.sdk_invalid", "app.manifest.version_unsupported", "app.manifest.window_size_invalid", "app.mapping.invalid", "app.package.box_too_old", "app.package.downgrade_unsupported", "app.package.invalid", "app.package.layout_invalid", "app.package.lock_invalid", "app.package.not_found", "app.package.too_large", "app.permission.denied", "app.permission.not_requested", "app.pool.fixed", "app.pool.required", "app.pool.unavailable", "app.storage.key_invalid", "app.storage.not_found", "app.storage.too_large", "app.token.invalid", "auth.account.disabled", "auth.challenge.expired", "auth.credentials.invalid", "auth.csrf.header_missing", "auth.desktop.not_allowed", "auth.display_name.invalid", "auth.password.too_common", "auth.password.too_long", "auth.password.too_short", "auth.permission.denied", "auth.rate.limited", "auth.recovery.invalid", "auth.session.expired", "auth.setup.already_done", "auth.totp.already_enabled", "auth.totp.invalid", "auth.totp.not_enrolled", "auth.username.invalid", "auth.username.reserved", "desktop.device.not_found", "desktop.item.conflict", "desktop.item.invalid", "desktop.item.limit_reached", "desktop.item.not_found", "desktop.layout.conflict", "desktop.layout.invalid", "desktop.layout.too_large", "desktop.note.too_long", "fileservices.service.unavailable", "fileservices.workgroup.invalid", "fs.cursor.invalid", "fs.entry.access_denied", "fs.entry.exists", "fs.entry.is_folder", "fs.entry.not_folder", "fs.entry.not_found", "fs.folder.not_empty", "fs.io.failed", "fs.name.invalid", "fs.operation.into_itself", "fs.operation.invalid", "fs.path.invalid", "fs.range.not_satisfiable", "fs.share.data_choice_required", "fs.share.dataset_name_invalid", "fs.share.description_invalid", "fs.share.exists", "fs.share.folder_dev_only", "fs.share.invalid", "fs.share.name_mismatch", "fs.share.name_reserved", "fs.share.no_dataset", "fs.share.not_found", "fs.share.path_taken", "fs.share.pool_not_prepared", "fs.share.read_only", "fs.share.unavailable", "fs.thumbnail.not_found", "fs.thumbnail.too_many", "fs.trash.retention_invalid", "fs.upload.incomplete", "fs.version.not_found", "fs.volume.full", "fs.volume.read_only", "homes.choice.invalid", "homes.home.in_use", "homes.home.name_mismatch", "homes.home.not_found", "homes.move.running", "homes.pool.no_space", "homes.pool.taken", "homes.pool.unavailable", "homes.pool.unchanged", "homes.quota.invalid", "installer.check.failed", "installer.claim.required", "installer.claim.taken", "installer.disk.count", "installer.disk.unsuitable", "installer.erase.not_confirmed", "installer.hostname.invalid", "installer.install.failed", "installer.install.running", "installer.keyboard.invalid", "installer.reboot.not_ready", "jobs.job.not_found", "logs.app.invalid", "logs.archive.pool_unavailable", "logs.batch.too_large", "logs.query.invalid", "logs.settings.invalid", "network.address.invalid", "network.apply.failed", "network.bond.member_invalid", "network.bond.members_missing", "network.bond.primary_invalid", "network.change.empty", "network.change.not_found", "network.change.pending", "network.config.unreachable", "network.default_interface.invalid", "network.dns.invalid", "network.dns.too_many", "network.firewall.failed", "network.gateway.invalid", "network.global.not_changeable", "network.host_name.invalid", "network.interface.duplicate", "network.interface.kind_invalid", "network.interface.name_invalid", "network.interface.not_changeable", "network.interface.unknown", "network.mtu.invalid", "network.search_domain.invalid", "network.search_domain.too_many", "network.vlan.duplicate", "network.vlan.id_invalid", "network.vlan.parent_invalid", "notifications.message.invalid", "notifications.notification.not_found", "permissions.grant.invalid", "proxy.access.denied", "proxy.address.denied", "proxy.address.invalid", "proxy.auth.required", "proxy.basic_auth.invalid", "proxy.basic_auth.password_missing", "proxy.certificate.missing", "proxy.certificate.name_mismatch", "proxy.domain.invalid", "proxy.domain.taken", "proxy.domains.missing", "proxy.domains.too_many", "proxy.header.invalid", "proxy.headers.too_many", "proxy.host.not_found", "proxy.host.unknown", "proxy.limit.out_of_range", "proxy.loop.detected", "proxy.redirect.not_found", "proxy.redirect.status_invalid", "proxy.redirect.target_invalid", "proxy.sign_in.address_invalid", "proxy.sign_in.group_not_found", "proxy.sign_in.user_not_found", "proxy.stream.name_invalid", "proxy.stream.not_found", "proxy.stream.port_in_use", "proxy.stream.port_privileged", "proxy.stream.port_reserved", "proxy.stream.port_taken", "proxy.stream.protocol_missing", "proxy.target.invalid", "proxy.target.loop", "proxy.target.on_box", "proxy.target.timeout", "proxy.target.unavailable", "proxy.ticket.target_invalid", "proxy.websockets.disabled", "realtime.message.invalid", "realtime.topic.invalid", "realtime.topic.unknown", "realtime.upgrade.required", "request.body.invalid", "request.media_type.unsupported", "request.method.not_allowed", "request.route.not_found", "storage.alert.not_found", "storage.command.failed", "storage.command.timed_out", "storage.dataset.compression_invalid", "storage.dataset.exists", "storage.dataset.in_use_by_share", "storage.dataset.limit_invalid", "storage.dataset.managed", "storage.dataset.name_invalid", "storage.dataset.name_mismatch", "storage.dataset.not_found", "storage.dataset.property_unsupported", "storage.dataset.protected", "storage.dataset.quota_below_used", "storage.dataset.record_size_invalid", "storage.dataset.reservation_too_large", "storage.dataset.unchanged", "storage.disk.not_found", "storage.disk.refused", "storage.encryption.unavailable", "storage.import.device_unknown", "storage.import.force_required", "storage.import.not_found", "storage.import.not_importable", "storage.import.preview_required", "storage.plan.action_invalid", "storage.plan.expired", "storage.plan.not_found", "storage.plan.stale", "storage.pool.disk_count", "storage.pool.disks_missing", "storage.pool.encryption_required", "storage.pool.expanding", "storage.pool.layout_invalid", "storage.pool.name_invalid", "storage.pool.name_mismatch", "storage.pool.name_taken", "storage.pool.not_found", "storage.pool.not_prepared", "storage.pool.read_only", "storage.pool.suspended", "storage.schedule.invalid", "storage.scrub.not_running", "storage.scrub.running", "storage.snapshot.confirmation_mismatch", "storage.snapshot.dataset_not_found", "storage.snapshot.exists", "storage.snapshot.held", "storage.snapshot.newer_exist", "storage.snapshot.not_found", "storage.snapshot.not_pithyx", "storage.snapshot.schedule_invalid", "storage.vdev.not_found", "storage.vdev.not_raidz", "storage.volume.size_invalid", "storage.volume.too_large", "storage.zfs.unavailable", "store.app.not_found", "store.catalog.architecture_missing", "store.catalog.built_in", "store.catalog.busy", "store.catalog.data_version_decreased", "store.catalog.exists", "store.catalog.id_reserved", "store.catalog.invalid_json", "store.catalog.mismatch", "store.catalog.not_found", "store.catalog.rule_violation", "store.catalog.schema_violation", "store.catalog.sequence_old", "store.catalog.signature_invalid", "store.catalog.unreachable", "store.catalog.url_invalid", "store.catalog.version_unsupported", "store.package.hash_mismatch", "system.backup.category_missing", "system.backup.invalid", "system.backup.password_wrong", "system.backup.restore_expired", "system.backup.restore_failed", "system.backup.restore_running", "system.backup.too_large", "system.backup.too_new", "system.internal.unexpected", "system.origin.forbidden", "system.time.apply_failed", "system.time.server_invalid", "system.time.servers_too_many", "system.time.zone_invalid", "tls.custom.expired", "tls.custom.invalid", "tls.custom.key_mismatch", "tls.issued.not_found", "tls.name.invalid", "tls.name.not_permitted", "tls.names.missing", "tls.names.too_many", "tls.validity.out_of_range", "update.apply.failed", "update.apply.running", "update.channel.invalid", "update.channel.mismatch", "update.channel.sequence_old", "update.channel.signature_invalid", "update.download.mismatch", "update.file.architecture", "update.file.channel", "update.file.hash_mismatch", "update.file.invalid", "update.file.minimum", "update.file.missing_entry", "update.file.not_found", "update.file.older", "update.file.signature_invalid", "update.file.too_large", "update.file.unexpected_entry", "update.none.available", "update.rollback.unconfirmed", "update.snapshot.not_found", "update.source.invalid", "update.source.unreachable", "update.space.insufficient", "update.system.unsupported", "users.account.refused", "users.gid.exhausted", "users.group.builtin", "users.group.description_invalid", "users.group.exists", "users.group.name_invalid", "users.group.name_reserved", "users.group.not_found", "users.group.refused", "users.uid.exhausted", "users.user.exists", "users.user.last_admin", "users.user.not_found", "users.user.self"

A failed client message. id is empty when the message could not be parsed.

Feld Typ Pflicht Beschreibung
id string ja
code ErrorCode ja
params map of object ja
type "error" ja
requestId string ja

A change of a topic. requestId is the id of the action that caused it, if any.

Feld Typ Pflicht Beschreibung
topic string ja
data object ja
type "event" ja
requestId string ja

A file or folder in a share.

Feld Typ Pflicht Beschreibung
name string ja Name within its folder.
kind FileKind ja File, folder, symlink (not followed in listings) or another kind such as a device node.
size integer (int64) ja Bytes for files, 0 for folders.
modified string (date-time) ja Last change of the content, UTC.

Typ: "file", "folder", "symlink", "other"

Feld Typ Pflicht Beschreibung
shareId integer (int64) ja The share.
path string ja Path relative to the share.

Typ: "copy", "move", "delete"

Feld Typ Pflicht Beschreibung
kind FileOperationKind ja copy, move or delete.
items null | FileLocation[] nein The files and folders to work on, at most 1000. Leave out when AllIn is given.
target null | FileLocation nein The folder to copy or move into; not used for delete.
onConflict null | ConflictPolicy nein For copy and move; fail when left out.
permanent boolean nein For delete: remove for good instead of moving to the share’s recycle bin. Only when the user asked for it.
allIn null | FolderSelection nein Every entry of a folder except some names: selecting a whole folder without sending its names.

The file services of the box. Administrators only.

Feld Typ Pflicht Beschreibung
smbEnabled boolean ja Whether SMB is switched on.
workgroup string ja The SMB workgroup, 1 to 15 letters, digits, dots, dashes and underscores.
sftpEnabled boolean ja Whether SFTP is switched on.
smb FileServiceState ja How SMB is doing.
sftp FileServiceState ja How SFTP is doing.
sshEnabled boolean ja Whether users with the SSH login right may sign in over SSH with a shell. Off by default.
webDavEnabled boolean ja Whether WebDAV is switched on, at /webdav/ of the daemon’s address. Off by default.
ftpEnabled boolean ja Whether FTP is switched on, with TLS (FTPS). Off by default.
ftpPlainAllowed boolean ja Whether FTP also works without TLS, at the users’ own risk. Off by default.
ftp FileServiceState ja How FTP is doing.
ftpPort integer (int32) ja The FTP control port.
ftpFingerprint null | string ja The SHA-256 fingerprint of the FTPS certificate, for clients that ask whether to trust it; null until FTP ran once.
privateNetworksOnly boolean ja Whether the firewall lets only private networks (RFC 1918, ULA, link-local) reach SMB, SFTP, SSH and FTP. Off by default.
firewallActive boolean ja Whether the firewall is applied here; false on a development machine and in simulation, where the rules are only rendered.

Changes of the file services; fields left out stay.

Feld Typ Pflicht Beschreibung
smbEnabled null | boolean nein Switches SMB on or off.
workgroup null | string nein A new SMB workgroup.
sftpEnabled null | boolean nein Switches SFTP on or off.
sshEnabled null | boolean nein Switches SSH logins with a shell on or off for users with the SSH login right.
webDavEnabled null | boolean nein Switches WebDAV on or off.
ftpEnabled null | boolean nein Switches FTP (FTPS) on or off.
ftpPlainAllowed null | boolean nein Allows or refuses plain FTP without TLS; refusing it ends every plain session.
privateNetworksOnly null | boolean nein Limits SMB, SFTP, SSH and FTP to private networks, or lets every network reach them again.

How a file service is doing.

Typ: "off", "running", "failed", "unavailable"

Feld Typ Pflicht Beschreibung
snapshot string ja The snapshot the version is in; pass it to restore.
createdAt string (date-time) ja When the snapshot was taken (UTC).
kind FileKind ja File or folder.
size integer (int64) ja Bytes for files, 0 for folders.
modified string (date-time) ja Last change of the content in that version, UTC.

Response of GET /api/files/{shareId}/versions.

Feld Typ Pflicht Beschreibung
path string ja The file or folder, relative to the share.
versions FileVersion[] ja Newest first; empty when the share is not on a ZFS dataset.
Feld Typ Pflicht Beschreibung
path string ja The file or folder, relative to the share; it may have been deleted since.
snapshot string ja The snapshot to restore from, as listed.
overwrite boolean nein Replace the current file (folders are merged) instead of restoring next to it.

What a folder topic sends: the names that changed since the last event, or a request to list again.

Feld Typ Pflicht Beschreibung
changed object[] ja Entries that appeared or changed, with their current metadata.
removed string[] ja Names that are gone.
resync boolean ja True when changes were lost (the kernel queue overflowed); list the folder again.
gone boolean ja True when the folder itself was deleted or moved away.

One page of a folder listing.

Feld Typ Pflicht Beschreibung
path string ja The folder, relative to the share (“” for its root).
folderId string ja Stable id of the folder, also after a rename.
total integer (int32) ja Entries in the folder when the listing was made.
entries FileEntry[] ja This page, in the requested order.
nextCursor null | string ja Pass as cursor for the next page; null on the last page.
topic string ja WebSocket topic with live changes of this folder while it is subscribed.

Every entry of a folder except some names: selecting a whole folder without sending its names.

Feld Typ Pflicht Beschreibung
folder FileLocation ja The folder whose entries are meant.
except string[] ja Names left out, at most 1000.

The snapshot of a folder topic: the folder as the watch sees it.

Feld Typ Pflicht Beschreibung
watching boolean ja Whether changes are being delivered.

Settings of the whole box.

Feld Typ Pflicht Beschreibung
hostName string ja The host name: letters, digits and hyphens, 1 to 63 characters. Samba uses its first 15 as the NetBIOS name.
dnsServers string[] ja Name servers, at most four; when set they replace those DHCP and router advertisements announce.
searchDomains string[] ja Domains tried for short names, at most six.
defaultInterface null | string nein The interface whose gateway carries the default route when several have one; null leaves it to the metrics.

One grant of a user or a group.

Feld Typ Pflicht Beschreibung
resource string ja share:<id>, protocol:smb|sftp|webdav|ftp, app:<id> or right:admin|desktopLogin|sshLogin|power.
level GrantLevel ja read or readWrite for a shared folder, allow for everything else.

How far a grant goes: read or readWrite for a shared folder, allow for everything else.

Typ: "read", "readWrite", "allow"

Feld Typ Pflicht Beschreibung
grants GrantEntry[] ja Every grant the subject should have; the others go. A subject has at most one grant per resource.

The grants of a group. Administrators only.

Feld Typ Pflicht Beschreibung
grants GrantEntry[] ja Every grant of the group.

A group a user is in.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id (the group’s Linux gid).
name string ja The group name.

A group as the Users page shows it. Administrators only.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id, and the Linux gid: 30000 to 39999 and never reused, 100 for the built-in group.
name string ja The Linux group name, lower case.
description string ja Free text, may be empty.
builtin boolean ja The built-in group users: every user is a member, and it can neither be renamed nor deleted.
memberIds integer (int64)[] ja The ids of its members; every user for the built-in group.
createdAt string (date-time) ja When the group was created, UTC.

Fields left out stay as they are. The built-in group takes none of them.

Feld Typ Pflicht Beschreibung
name null | string nein A new name; the gid stays.
description null | string nein An empty text removes the description.
memberIds null | integer (int64)[] nein Every member the group should have; the others leave it.

Typ: "allowed", "needsSerialConfirmation", "refused"

Feld Typ Pflicht Beschreibung
diskId string ja The disk the verdict is for.
decision GuardDecision ja Whether a destructive command may touch the disk.
reason string ja Why, as a stable code: system_disk, read_only, mounted, pool_member, not_test_disk, duplicate_serial, no_serial, not_checked, has_data, confirmed or empty; when a pool is imported, importable for an allowed disk.
pool null | string ja The imported pool the disk belongs to, for pool_member.
contents string[] ja What was found on the disk: partitions and signature types.
Feld Typ Pflicht Beschreibung
status string ja
mode DaemonMode ja

A home.

Feld Typ Pflicht Beschreibung
shareId integer (int64) ja Its id as a share: Files opens it with this id.
folder string ja Its folder below homes: the user name, or <name>.deleted-<uid> after its user was deleted.
userId null (int64) | integer (int64) ja Its user, or null when the user was deleted.
username null | string ja The user’s name, or null.
displayName null | string ja The user’s display name, or null.
pool null | string ja The pool it is on.
usedBytes null (int64) | integer (int64) ja Space it uses with its snapshots, or null while it cannot be read.
quotaBytes null (int64) | integer (int64) ja Its quota as set on the pool, or null for none.
ownQuotaBytes null (int64) | integer (int64) ja The user’s own quota: null takes the default, 0 means none.
unavailable null | string ja Why its files cannot be reached now, or null when they can.
Feld Typ Pflicht Beschreibung
pool string ja The pool the homes move to; it needs the Pithyx layout and room for every home.

The homes as Settings shows them. Administrators only.

Feld Typ Pflicht Beschreibung
pool null | string ja The home pool, or null before the first pool that can take homes.
pools HomePool[] ja Every pool with whether it can take the homes.
defaultQuotaBytes null (int64) | integer (int64) ja The quota of every home without its own, or null for none.
homes HomeInfo[] ja Every home, those of deleted users included.
moving null (int64) | integer (int64) ja The job that moves the homes to another pool while it runs, otherwise null.
Feld Typ Pflicht Beschreibung
name string ja The pool.
availableBytes null (int64) | integer (int64) ja Free space for the homes, or null while it cannot be read.
unavailable null | string ja Why it cannot take the homes (missing, offline, read_only, not_prepared, locked, not_mounted), or null when it can.
Feld Typ Pflicht Beschreibung
quotaBytes null (int64) | integer (int64) ja The user’s own quota: at least 1 MiB, 0 for none, null for the default.
Feld Typ Pflicht Beschreibung
shareId integer (int64) ja The shared folder that gets a folder with the home’s files.
Feld Typ Pflicht Beschreibung
defaultQuotaBytes null (int64) | integer (int64) ja The quota of every home without its own: at least 1 MiB, or null for none.
Feld Typ Pflicht Beschreibung
name string ja The pool’s name as stored on its disks.
poolGuid string ja The numeric identifier as decimal text; pool.import.readonly takes it as poolGuid.
state string ja ZFS state as it would be imported: ONLINE, DEGRADED, UNAVAIL or FAULTED.
status null | string ja What ZFS says is wrong, in English, if anything.
action null | string ja What ZFS says can be done, in English.
messageId null | string ja ZFS message id, for example ZFS-8000-2Q (devices missing) or ZFS-8000-EY (last used by another system).
canImport boolean ja True when ZFS can import the pool.
needsForce boolean ja True when it was last used by another system: importing needs force and the typed name.
nameTaken boolean ja True when an imported pool has this name: the import needs newName.
vdevs ImportVdev[] ja The pool’s layout with each device’s state and disk.
disks GuardVerdict[] ja The guard’s import verdict for each disk the pool is on.
unknownDevices string[] ja Present devices that are on no disk the daemon knows; such a pool is not offered.
allowed boolean ja True when the pool can be imported: ZFS can, and every device is on a disk the guard allows.

Response of POST /api/storage/import/scan: pools on the disks that are not imported. Nothing was imported.

Feld Typ Pflicht Beschreibung
pools ImportablePool[] ja
Feld Typ Pflicht Beschreibung
name string ja Device or vdev name as zpool import prints it: raidz1-0, a by-id name, a path or, for a missing device, its GUID.
state null | string ja ZFS state, for example ONLINE or UNAVAIL; null for the logs, cache, spares, special and dedup group headings, and for cache and spare devices, which an import lists without one.
detail null | string ja What ZFS adds after the state, for example cannot open or insufficient replicas.
diskId null | string ja The disk this device is on, if it is one the daemon knows.
children ImportVdev[] ja Child vdevs.

A grant that reaches a user through one of its groups.

Feld Typ Pflicht Beschreibung
resource string ja The resource, as in GrantEntry.
level GrantLevel ja The level, as in GrantEntry.
groupId integer (int64) ja The group that has the grant.
groupName string ja Its name.
Feld Typ Pflicht Beschreibung
archive string ja The backup file, base64.
password string ja The password it was created with.
Feld Typ Pflicht Beschreibung
pool null | string nein The pool for the app data; required for the first app, and then always the app pool.
access null | AppAccess nein Who may use the app after an install; an update keeps who may use it. Defaults to the preview’s suggested access.

A requirement the box must meet before the installation starts.

Feld Typ Pflicht Beschreibung
id string ja cpu (x86-64-v2), uefi, memory, secure_boot (off) or disk (a suitable disk exists).
passed boolean ja Whether the box meets it.
params object ja Values for the text, for example minGb and foundGb of memory.

A disk as the installer offers it.

Feld Typ Pflicht Beschreibung
disk Disk ja The disk.
suitable boolean ja Whether the system may be installed on it.
reason null | string ja Why not: boot_medium, read_only, in_use (mounted or swap) or too_small.
hasData boolean ja Whether it holds partitions or file systems that the installation erases.
caution null | string ja Flash that wears out under the system’s writes: usb (a USB stick or disk) or card (a memory card or other removable medium); null otherwise, also for eMMC.

Response of GET /api/installer/options: what the steps offer.

Feld Typ Pflicht Beschreibung
disks InstallerDisk[] ja Every disk, suitable or not.
network NetworkLink[] ja The network cards with their state and addresses.
networkConfig NetworkConfig ja The network settings of the live system (set on the console, for example), the start of step 2.
timeZones string[] ja IANA time zone names.
keyboardLayouts string[] ja XKB layout codes for the console keyboard.
minDiskBytes integer (int64) ja The smallest disk the system fits on.

Typ: "ready", "installing", "installed", "failed", "rebooting"

Response of GET /api/installer.

Feld Typ Pflicht Beschreibung
claimed boolean ja Whether a browser owns the installation.
owner boolean ja Whether this browser owns it.
phase InstallerPhase ja Where the installation is.
step null | string ja The step that runs or failed: partition, raid, filesystems, copy, configure, bootloader or finish.
stepIndex integer (int32) ja Zero-based position of Step.
stepCount integer (int32) ja Number of steps.
errorCode null | string ja Why the installation failed.
errorParams object ja Values for its text; for installer.install.failed the step, the command and its exitCode.
installId null | string ja Set once installed: the installed system answers it on http://<address>/api/install-id.
recoveryKey null | string ja Set once installed, for the owner only: the administrator’s recovery key, shown before the reboot.
version string ja The Pithyx version that gets installed.
checks InstallerCheck[] ja The requirements and whether the box meets them.

Response of GET /api/install-id on an installed box.

Feld Typ Pflicht Beschreibung
installId string ja

Body of POST /api/installer/install.

Feld Typ Pflicht Beschreibung
hostname string ja Name of the box, a DNS label.
language string ja System language.
region null | string ja Country of the formats, or null to follow each user’s language.
timeZone string ja IANA time zone.
ntpServers string[] ja Time servers; empty for the defaults.
keyboardLayout string ja XKB layout of the console keyboard.
diskIds string[] ja One disk, or two for a mirror.
username string ja The administrator.
password string ja The administrator’s password.
displayName null | string ja The administrator’s display name.
eraseConfirmed boolean ja The user confirmed that every listed disk is erased.
network null | NetworkConfig nein Everything Pithyx configures in the network. Cards that are not listed get their address by DHCP.
Feld Typ Pflicht Beschreibung
source string ja online installs the channel’s newest file, file the uploaded one.
includeDebian boolean ja Also install the Debian updates, in the same snapshot.

The settings Pithyx keeps for one interface. A network card without them gets its address by DHCP.

Feld Typ Pflicht Beschreibung
name string ja The interface: the kernel’s name of a card, or the name of a bond or VLAN (1 to 15 characters).
kind InterfaceKind ja Card, bond or VLAN.
enabled boolean nein False keeps the link down.
ipv4 Ipv4Mode nein DHCP, static or off.
ipv4Address null | string nein For static: the address with prefix length, for example 192.168.1.10/24.
ipv4Gateway null | string nein For static: the gateway, optional, inside the address’s network.
ipv6 Ipv6Mode nein Auto (router advertisements and DHCPv6), static or off.
ipv6Address null | string nein For static: the address with prefix length, for example 2001:db8::10/64.
ipv6Gateway null | string nein For static: the gateway, optional, inside the address’s network or link-local.
mtu null (int32) | integer (int32) nein The MTU in bytes, 1280 to 9000 (576 without IPv6); null keeps the default.
bond null | BondSettings nein For a bond: its cards and mode.
vlan null | VlanSettings nein For a VLAN: its parent and id.

What an interface is: a network card, a bond of cards or a VLAN on a card or bond.

Typ: "ethernet", "bond", "vlan"

How an interface gets its IPv4 address.

Typ: "dhcp", "static", "off"

How an interface gets its IPv6 address: automatically (router advertisements and DHCPv6), static or none.

Typ: "auto", "static", "off"

A certificate for another device.

Feld Typ Pflicht Beschreibung
names string[] ja DNS names (a leading *. for a wildcard) and addresses, 1 to 100, inside the authority’s scope.
validityDays integer (int32) ja 1 to 825 days, never past the intermediate’s end.
keyType CertificateKeyType ja ECDSA (default) or RSA for devices that take nothing else.

A certificate the authority issued for another device. Its key was handed out once and is not kept.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Its number on the box.
certificate CertificateInfo ja The certificate.
keyType CertificateKeyType ja The key it was made with.
createdAt string (date-time) ja When it was issued.
createdBy null | string ja The administrator who issued it, if the account still had that name.
currentAuthority boolean ja It chains to the current root; false after a new authority replaced the old one.

A newly issued certificate with its files; the private key is in this answer only.

Feld Typ Pflicht Beschreibung
certificate IssuedCertificate ja The entry in the list.
certificatePem string ja The certificate followed by the intermediate, as servers take it.
privateKeyPem string ja The private key (PKCS #8, unencrypted).

A long operation of a user, such as copying files. Also the data of the jobs/{id} topics.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Also names the job’s topic, jobs/{id}.
kind string ja What the job does, chosen by the module that started it (for example files.copy).
state JobState ja Where the job is in its life.
progress JobProgress ja Live in the topic; in REST answers of running jobs at most about a second old.
parameters null | JsonElement ja What the job was started with, as given by the module that started it.
result null | JsonElement ja What the job produced, if it set a result.
errorCode null | ErrorCode ja Error code of a failed job.
errorParams null | map of object ja Parameters of the error message of a failed job.
requestId string ja Request id of the request that started the job; the job’s logs carry it.
createdAt string (date-time) ja When the job was queued (UTC).
startedAt null (date-time) | string (date-time) ja When it started running (UTC).
finishedAt null (date-time) | string (date-time) ja When it reached a final state (UTC).

Snapshot of the jobs topic: the signed-in user’s queued and running jobs, oldest first.

Feld Typ Pflicht Beschreibung
jobs Job[] ja

How far a job is. Totals are 0 while unknown.

Feld Typ Pflicht Beschreibung
itemsDone integer (int64) ja Items (for example files) finished so far.
itemsTotal integer (int64) ja Items in the whole job.
bytesDone integer (int64) ja Bytes processed so far.
bytesTotal integer (int64) ja Bytes in the whole job.
currentItem null | string ja What the job works on right now, for example a path.

Where a job is in its life. The last four are final and never change again.

Typ: "queued", "running", "succeeded", "failed", "cancelled", "interrupted"

Typ: object

How often LACP partners exchange their state: every 30 seconds or every second.

Typ: "slow", "fast"

Typ: "off", "ready", "unavailable"

One log entry of the daemon, a system service or an app.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable within the current logs or the archive it comes from.
time string (date-time) ja When it happened, UTC.
level LogLevelName ja debug, info, warn or error.
source string ja daemon, system/<service> (for example system/kernel, system/smbd) or app/<id>.
message string ja The rendered message; secrets are masked before it is stored.
requestId null | string ja The request id (W3C trace id) of the request that caused it, if any.
user null | string ja The user an app entry was written for, if any.
data null | map of string ja Further fields (event name, error code, path, the app’s own data), as text.
archived boolean ja True when the entry comes from the archive on a pool.
Feld Typ Pflicht Beschreibung
username string ja
password string ja
Feld Typ Pflicht Beschreibung
user null | UserInfo ja The signed-in user.
totpRequired boolean ja True when a TOTP or recovery code must follow.
challenge null | string ja Pass to /api/auth/login/totp within five minutes.

Typ: "debug", "info", "warn", "error"

A page of entries, newest first.

Feld Typ Pflicht Beschreibung
entries LogEntry[] ja At most the requested limit.
nextCursor null | string ja Pass as cursor for the next, older page; null when there is none.

Retention of the current logs on the system disk and of the optional archive on a pool.

Feld Typ Pflicht Beschreibung
retentionDays integer (int32) ja Current logs older than this are dropped (1 to 365).
maxBytes integer (int64) ja The current logs of the system and all apps together stay below this (64 MB to 4 GB); the oldest go first.
archiveEnabled boolean ja Whether entries are also kept in an archive on a pool.
archivePool null | string ja The pool of the archive; null for the first pool.
archiveRetentionDays integer (int32) ja Archived entries older than this are dropped (1 to 3650).
archiveMaxBytes integer (int64) ja The archive stays below this (256 MB to 1 TB).

The settings with what they hold now.

Feld Typ Pflicht Beschreibung
settings LogSettings ja The retention as set.
currentBytes integer (int64) ja Space the current logs take on the system disk.
currentOldest null (date-time) | string (date-time) ja The oldest current entry, or null when there is none.
archiveState LogArchiveState ja Whether the archive is off, written, or waiting for its pool.
archivePool null | string ja The pool the archive is on or would be on, or null when there is no pool.
archiveBytes null (int64) | integer (int64) ja Space the archive takes, or null without one.
archiveOldest null (date-time) | string (date-time) ja The oldest archived entry, or null.
archivedAt null (date-time) | string (date-time) ja When entries were last copied to the archive, or null.
pools string[] ja Pools that can hold the archive.

Body of POST /api/notifications/read.

Feld Typ Pflicht Beschreibung
ids null | integer (int64)[] nein The notifications to mark as read; null or missing marks every unread one.

Where a change of the network came from.

Typ: "web", "console"

What a change would do, before it is applied.

Feld Typ Pflicht Beschreibung
config NetworkConfig ja The settings as they would be stored (canonical form).
interfaces string[] ja The interfaces whose configuration changes.
hostNameChanged boolean ja Whether the host name changes.
connectionAffected boolean ja Whether the interface this browser’s connection comes in on changes; the page warns.
addresses string[] ja Static addresses (without prefix) of the changed interfaces, to open after the change.

Everything Pithyx configures in the network. Cards that are not listed get their address by DHCP.

Feld Typ Pflicht Beschreibung
interfaces InterfaceConfig[] ja Cards with their own settings, bonds and VLANs.
global GlobalNetworkConfig ja Host name, name servers, search domains, default route.

An interface as the system has it now.

Feld Typ Pflicht Beschreibung
name string ja The kernel’s name, for example enp1s0.
kind InterfaceKind ja Card, bond or VLAN.
macAddress null | string ja The hardware address.
up boolean ja Whether the interface is up and its link works.
carrier boolean ja Whether a cable (or the other end) is connected.
speedMbps null (int32) | integer (int32) ja The link speed in Mbit/s, when the driver reports it.
duplex null | string ja full or half, when the driver reports it.
mtu integer (int32) ja The MTU in bytes.
addresses string[] ja IPv4 and global IPv6 addresses with prefix length.
gateways string[] ja The default gateways reached through this interface.
dnsServers string[] ja The name servers this interface announced or was given.
defaultRoute boolean ja Whether this interface carries the default route (the lowest metric).
master null | string ja The bond this card belongs to.
vlanParent null | string ja For a VLAN: the interface that carries it.
vlanId null (int32) | integer (int32) ja For a VLAN: its id.
method string ja dhcp, static, off or unknown: how its IPv4 address comes.
configured boolean ja Whether Pithyx keeps settings for it (otherwise a card gets DHCP).
changeable boolean ja Whether Pithyx may change it here; on a development machine only the interfaces in /etc/pithyx/test-nics.

The network of the box. Administrators only.

Feld Typ Pflicht Beschreibung
config NetworkConfig ja What Pithyx configured.
links NetworkLink[] ja Every card, bond and VLAN; container bridges and virtual cables are left out.
hostName string ja The host name the system has now.
globalChangeable boolean ja Whether Pithyx may change host name, name servers and the default route here; not on a development machine.
pending null | PendingNetworkChange ja A change of the network waiting for its confirmation.
confirmSeconds integer (int32) ja How long a change waits for its confirmation before it is rolled back.
connectionInterface null | string ja The interface this browser’s connection comes in on, if known; empty in the live topic.

One interface after a connection test of the installer.

Feld Typ Pflicht Beschreibung
name string ja The interface.
up boolean ja Whether its link came up.
addresses string[] ja The addresses it got.
gateways string[] ja Its gateways.
gatewayReachable null | boolean ja Whether the first gateway answered a ping; null without a gateway.

The connection test of the installer: the settings are applied, checked and rolled back.

Feld Typ Pflicht Beschreibung
running boolean ja Whether the test still runs; the page may lose its connection meanwhile.
interfaces NetworkTestInterface[] ja What each tested interface got.
errorCode null | string ja Why the test could not run.
errorParams object ja Values for its text.
Feld Typ Pflicht Beschreibung
kind DesktopItemKind ja What to create.
column integer (int32) ja Grid column.
row integer (int32) ja Grid row.
app null | string nein Shortcuts: the id of the app to open. Required for shortcuts, not allowed for notes.
name null | string nein Shortcuts: an own label, or null for the app’s name.
text null | string nein Notes: the text, at most 4000 characters. Required for notes, not allowed for shortcuts.
Feld Typ Pflicht Beschreibung
path string ja The new folder, relative to the share. Its parent must exist.
Feld Typ Pflicht Beschreibung
name string ja Lowercase letters, digits, underscores and hyphens, starting with a letter or underscore, at most 32 characters; not a system name.
description null | string nein Optional, at most 200 characters.
memberIds null | integer (int64)[] nein The ids of the first members.
Feld Typ Pflicht Beschreibung
name string ja Letters, digits, spaces, dots, dashes and underscores, 1 to 64 characters, not starting with a dot.
path string ja An existing folder on the host: absolute, without symlinks, outside the system directories and not overlapping another share.
Feld Typ Pflicht Beschreibung
username string ja Lowercase letters, digits, underscores and hyphens, starting with a letter or underscore, at most 32 characters; not a system name.
password string ja At least 8 characters and not one of the most common passwords.
displayName null | string nein Optional, at most 64 characters.
groupIds null | integer (int64)[] nein The groups the user joins, besides the built-in group users.
grants null | GrantEntry[] nein The user’s own grants; when left out, the desktop login, SMB and the apps org.pithyx.files, org.pithyx.viewer and org.pithyx.demo.

An entry of a user’s notification history. The text is not part of it: the desktop translates code with params from the notifications namespace (<code>.title, .body).

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id; never reused.
code string ja Message code, for example jobs.job.failed, storage.alert.poolDegraded, storage.alert.resolved or app.message (an app’s own plain text in params.title and params.body).
params object ja Message parameters: strings and numbers, plus nested objects where a code says so.
tone NotificationTone ja How the desktop shows it.
app null | string ja Id of the app that sent it; null for the system.
createdAt string (date-time) ja When it was created (UTC).
readAt null (date-time) | string (date-time) ja When the user read it (UTC); null while unread.

Event of the notifications topic. Only the user whose notifications changed receives it.

Feld Typ Pflicht Beschreibung
change "created", "read", "deleted" ja What changed in a user’s notifications.
notification null | object ja An entry of a user’s notification history. The text is not part of it: the desktop translates code with params from the notifications namespace (<code>.title, .body).
ids integer (int64)[] ja The notifications read or deleted; for created the ones dropped.
readAt null (date-time) | string (date-time) ja When the notifications of a read event were read (UTC).

Snapshot of the notifications topic and answer of GET /api/notifications.

Feld Typ Pflicht Beschreibung
items Notification[] ja The signed-in user’s notifications, newest first; at most 200, none older than 30 days.

How a notification looks: the color of its card and toast.

Typ: "info", "success", "warning", "critical"

Feld Typ Pflicht Beschreibung
name string ja Kernel name, for example sda1.
path string ja Device node.
sizeBytes integer (int64) ja Size in bytes.
fileSystem null | string ja File system or content type, for example ext4 or zfs_member.
label null | string ja File system label, if any.
mountPoints string[] ja Where the partition is mounted; empty when it is not.
Feld Typ Pflicht Beschreibung
password string ja The new password, with the same rules as everywhere.

A change of the network waiting for its confirmation.

Feld Typ Pflicht Beschreibung
id string (uuid) ja Pass to confirm or revert it.
deadline string (date-time) ja When it is rolled back unless confirmed, UTC.
interfaces string[] ja The interfaces it changed.
addresses string[] ja Static addresses (without prefix) it set; open one of them when the old address went away.
hostName null | string ja The new host name, when it changed.
origin NetworkChangeOrigin ja Settings in a browser or the menu on the console.

Every resource besides shared folders a grant can name, in the order the editors show them.

Feld Typ Pflicht Beschreibung
rights string[] ja The special rights.
protocols string[] ja The file protocols.
apps string[] ja The app ids given to users; the administration apps come with the administrator right.
Feld Typ Pflicht Beschreibung
program string ja Program name.
arguments string[] ja Arguments, passed without a shell.
Feld Typ Pflicht Beschreibung
name string ja Pool name.
poolGuid string ja Pool GUID as decimal text (it does not fit a JSON number).
state string ja ZFS state: ONLINE, DEGRADED, FAULTED, OFFLINE, UNAVAIL, REMOVED or SUSPENDED; degraded further when disks are gone that ZFS has not noticed yet.
sizeBytes integer (int64) ja Raw size of all vdevs, parity included.
allocatedBytes integer (int64) ja Raw space in use.
freeBytes integer (int64) ja Raw space free.
capacityPercent integer (int32) ja Share of the raw space in use.
fragmentationPercent null (int32) | integer (int32) ja Free space fragmentation, if known.
readOnly boolean ja True when the pool was imported read-only.
dataErrors integer (int64) ja Number of files with permanent errors.
scan null | PoolScan ja The last or running scrub or resilver, if any.
vdevs Vdev[] ja Top-level vdevs, including log, cache, special and spare devices.
expansion null | PoolExpansion nein A RAID-Z expansion (OpenZFS 2.3): a disk attached to a raidz vdev, onto which ZFS spreads the existing data.

A RAID-Z expansion (OpenZFS 2.3): a disk attached to a raidz vdev, onto which ZFS spreads the existing data.

Feld Typ Pflicht Beschreibung
state string ja scanning while it runs, then finished or canceled.
vdevGuid null | string ja GUID of the raidz vdev that grows, if it is still in the pool.
startedAt null (date-time) | string (date-time) ja When it started (UTC).
endedAt null (date-time) | string (date-time) ja When it ended (UTC), if it did.
toReflowBytes integer (int64) ja Bytes to move onto the new layout.
reflowedBytes integer (int64) ja Bytes moved so far.
waitingForResilver boolean ja True while it waits for a resilver to finish.

Snapshot and event of storage/pools, and response of GET /api/storage/pools.

Feld Typ Pflicht Beschreibung
pools Pool[] ja
datasets Dataset[] ja
Feld Typ Pflicht Beschreibung
kind string ja Scan kind: scrub or resilver.
state string ja scanning, finished or canceled.
paused boolean ja True for a paused scrub.
startedAt null (date-time) | string (date-time) ja When the scan started (UTC).
endedAt null (date-time) | string (date-time) ja When it ended (UTC), if it did.
toExamineBytes integer (int64) ja Bytes the scan covers.
examinedBytes integer (int64) ja Bytes examined so far.
errors integer (int64) ja Errors the scan found.

What the power button does.

Typ: "restart", "shutdown"

Feld Typ Pflicht Beschreibung
action PowerAction ja restart or shutdown.

Snapshot and event of system/processes.

Feld Typ Pflicht Beschreibung
at string (date-time) ja When the list was read (UTC).
processes object[] ja Every process except kernel threads.

A user of the host’s Basic Auth.

Feld Typ Pflicht Beschreibung
username string ja 1 to 64 characters without a colon.
password null | string nein The password; leave it out to keep the stored one of an existing user.

Which certificate a host presents on 443.

Typ: "box", "custom"

A header the proxy sets; an empty value removes it.

Feld Typ Pflicht Beschreibung
name string ja The header’s name, letters, digits and -; never one the proxy controls itself.
value string ja Its value, at most 4096 characters, without line breaks.

A proxy host as Settings shows it.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Its number on the box.
domains string[] ja The names it answers.
enabled boolean ja It answers.
target ProxyTarget ja Where requests go.
webSockets boolean ja WebSocket upgrades pass.
http2 boolean ja HTTP/2 is offered on 443.
certificate ProxyCertificateSource ja Which certificate it presents.
presented null | CertificateInfo ja One certificate as Settings shows it.
forceHttps boolean ja Plain HTTP is redirected to HTTPS.
hsts boolean ja HTTPS answers carry Strict-Transport-Security.
forwardedHeaders boolean ja X-Forwarded-* go to the target.
preserveHost boolean ja The browser’s Host goes to the target.
hostHeader null | string ja The Host of the administrator’s choice, if any.
requestHeaders ProxyHeader[] ja Headers set on requests.
responseHeaders ProxyHeader[] ja Headers set on answers.
maxBodyMegabytes null (int32) | integer (int32) ja The upload limit in MB, or none.
connectTimeoutSeconds integer (int32) ja The connect timeout.
responseTimeoutSeconds integer (int32) ja The idle timeout of an answer.
allowAddresses string[] ja Only these get in, or everybody when empty.
denyAddresses string[] ja These never get in.
basicAuthUsers string[] ja The user names of the Basic Auth; passwords are never shown.
signIn ProxySignInRule ja The Pithyx sign-in in front of the host.
accessLog boolean ja Requests are logged.
logSource string ja The Log Center’s source of its requests.
createdAt string (date-time) ja When it was made.
updatedAt string (date-time) ja When it was last saved.

A proxy host as an administrator saves it.

Feld Typ Pflicht Beschreibung
domains string[] ja 1 to 50 DNS names, a leading *. for any one label in front; no name of another host.
enabled boolean ja The host answers; a disabled one is treated as unknown.
target ProxyTarget ja Where requests go.
webSockets boolean ja Pass WebSocket upgrades through.
http2 boolean ja Offer HTTP/2 to browsers on 443.
certificate ProxyCertificateSource ja Which certificate the host presents on 443.
forceHttps boolean ja Redirect plain HTTP on 80 to HTTPS on 443.
hsts boolean ja Send Strict-Transport-Security on HTTPS; browsers then refuse plain HTTP and any certificate warning for a year.
forwardedHeaders boolean ja Send X-Forwarded-For, -Proto and -Host; incoming ones are always dropped.
preserveHost boolean ja Send the browser’s Host instead of the target’s.
hostHeader null | string ja A Host of your own; overrides PreserveHost.
requestHeaders ProxyHeader[] ja Headers set on the request to the target, at most 20.
responseHeaders ProxyHeader[] ja Headers set on the answer to the browser, at most 20.
maxBodyMegabytes null (int32) | integer (int32) ja The largest upload in MB (1 to 1048576); none for no limit.
connectTimeoutSeconds integer (int32) ja How long connecting to the target may take, 1 to 300 seconds.
responseTimeoutSeconds integer (int32) ja How long the target may stay silent, 1 to 86400 seconds.
allowAddresses string[] ja Only these addresses or CIDR ranges get in; empty for everybody.
denyAddresses string[] ja These addresses or ranges never get in.
basicAuth ProxyBasicAuthUser[] ja Users of Basic Auth, at most 20; empty for none.
signIn ProxySignInRule ja The Pithyx sign-in in front of the host.
accessLog boolean ja Log every request in the Log Center under proxy/<first domain>.
certificatePem null | string nein With ProxyCertificateSource.Custom: the certificate and its chain in PEM; leave it out to keep the uploaded one.
privateKeyPem null | string nein Its unencrypted private key in PEM.

The settings that apply to every host.

Feld Typ Pflicht Beschreibung
unknownHosts UnknownHostAction ja What a name no enabled host has gets.
signInAddress null | string nein An https:// or http:// origin the box’s sign-in answers at, such as a proxy host in front of 7484; none for the requested name on 7484.

A redirect host as Settings shows it.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Its number on the box.
domains string[] ja The names it answers.
enabled boolean ja It answers.
target string ja Where it sends browsers.
status integer (int32) ja The redirect’s status code.
preservePath boolean ja The path and query are kept.
certificate ProxyCertificateSource ja Which certificate it presents.
presented null | CertificateInfo ja One certificate as Settings shows it.
createdAt string (date-time) ja When it was made.
updatedAt string (date-time) ja When it was last saved.

A redirect host as an administrator saves it.

Feld Typ Pflicht Beschreibung
domains string[] ja 1 to 50 DNS names, as for a proxy host.
enabled boolean ja The host answers.
target string ja An absolute http or https URL.
status integer (int32) ja 301, 302, 307 or 308.
preservePath boolean ja Append the request’s path and query to Target.
certificate ProxyCertificateSource ja Which certificate the host presents on 443.
certificatePem null | string nein With ProxyCertificateSource.Custom: the certificate and chain; leave it out to keep the uploaded one.
privateKeyPem null | string nein Its unencrypted private key.

Settings > Reverse proxy.

Feld Typ Pflicht Beschreibung
plainPort null (int32) | integer (int32) ja The port proxy hosts answer plain HTTP on (80 on a box); none in development unless set.
tlsPort null (int32) | integer (int32) ja The port proxy hosts answer HTTPS on (443 on a box); none without HTTPS.
unknownHosts UnknownHostAction ja What a name no enabled host has gets.
signInAddress null | string ja Where the Pithyx sign-in of a host sends visitors; none for the requested name on 7484.
hosts ProxyHost[] ja The proxy hosts.
redirects ProxyRedirect[] ja The redirect hosts.
streams ProxyStream[] ja The streams.

Who may pass the host’s Pithyx sign-in.

Feld Typ Pflicht Beschreibung
required boolean ja Visitors sign in with their account on the box first.
users string[] ja User names allowed besides the groups; administrators always are.
groups string[] ja Group names whose members are allowed. With no users and no groups, everybody who may sign in is.

A stream as Settings shows it.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Its number on the box.
name string ja What it is for.
enabled boolean ja The port is open.
port integer (int32) ja The box’s port.
tcp boolean ja TCP is forwarded.
udp boolean ja UDP is forwarded.
targetHost string ja Where it forwards to.
targetPort integer (int32) ja The target’s port.
listening boolean ja The box listens on the port now; false while disabled or when another program holds it.
createdAt string (date-time) ja When it was made.
updatedAt string (date-time) ja When it was last saved.

A stream as an administrator saves it.

Feld Typ Pflicht Beschreibung
name string ja What it is for, at most 100 characters.
enabled boolean ja The port is open and forwards.
port integer (int32) ja The box’s port; not one of the box’s own services, below 1024 only with PrivilegedPort.
tcp boolean ja Forward TCP.
udp boolean ja Forward UDP.
targetHost string ja A DNS name or IP address.
targetPort integer (int32) ja 1 to 65535.
privilegedPort boolean nein The administrator confirmed a port below 1024.

Where a proxy host forwards to.

Feld Typ Pflicht Beschreibung
scheme string ja http or https.
host string ja A DNS name or IP address.
port integer (int32) ja 1 to 65535.
tls ProxyTargetTls ja How an HTTPS target’s certificate is checked.
onBox boolean ja The administrator confirmed that the target is a service of this box itself.

Whether a proxy host’s target answers.

Feld Typ Pflicht Beschreibung
reachable boolean ja The target answered with any HTTP status.
status null (int32) | integer (int32) ja Its status code, if it answered.
error null | string ja Why not: timeout, refused, dns, tls or other.
milliseconds integer (int64) ja How long the check took.

How the proxy checks the certificate of an HTTPS target.

Typ: "system", "box", "none"

Where the browser goes next: the proxy host’s sign-in address with a one-time ticket.

Feld Typ Pflicht Beschreibung
url string ja The address to open.

A browser wants into a proxy host with the Pithyx sign-in.

Feld Typ Pflicht Beschreibung
url string ja The address it asked for.
Feld Typ Pflicht Beschreibung
username string ja
recoveryKey string ja
newPassword string ja
Feld Typ Pflicht Beschreibung
recoveryKey string ja The new recovery key. The old one no longer works.
Feld Typ Pflicht Beschreibung
codes string[] ja Shown exactly once. Each code replaces a TOTP code for one login.
Feld Typ Pflicht Beschreibung
path string ja The file or folder to rename.
name string ja The new name in the same folder.

One second of the box, the event of system/resources. Rates are per second since the previous sample.

Feld Typ Pflicht Beschreibung
at string (date-time) ja When it was measured (UTC).
uptimeSeconds number (double) ja Seconds since boot.
loadAverage number (double)[] ja Over 1, 5 and 15 minutes.
cpu object ja
memory object ja Physical memory split the way the monitor draws it. On Linux the ZFS ARC is not part of the page cache, so the kernel counts it as used; UsedBytes leaves it out and ArcBytes shows it.
network object[] ja Every interface except the loopback and container links.
disks object[] ja Every whole disk (no partitions, zvols or loop devices).
temperatures object[] ja Every sensor found; empty where the hardware or a virtual machine has none.

Snapshot of system/resources: what the box is and the last hour, as far as someone watched it.

Feld Typ Pflicht Beschreibung
cpuCount integer (int32) ja Cores the kernel lists.
memoryTotalBytes integer (int64) ja Installed memory the kernel manages.
history object ja The ring buffer of the last hour, averaged into buckets so the snapshot stays small. Every series has one entry per time; a device that did not exist at a time has null there.
latest null | object ja One second of the box, the event of system/resources. Rates are per second since the previous sample.
Feld Typ Pflicht Beschreibung
restoreId string ja From the summary of the checked backup.
categories BackupCategory[] ja The parts to restore; each replaces the current one completely.
Feld Typ Pflicht Beschreibung
enabled boolean ja Daily restore points, kept 7 days, on or off.

A step of a restore that did not work; the rest was restored.

Feld Typ Pflicht Beschreibung
category BackupCategory ja The part it belongs to.
step string ja accounts (Linux accounts and groups), linuxPasswords, sambaPasswords, time, tls or sshKeys.
Feld Typ Pflicht Beschreibung
restored BackupCategory[] ja The parts that were restored.
problems RestoreProblem[] ja Steps that failed; details are in the Log Center.
restarting boolean ja The daemon restarts in a few seconds to load the restored configuration.
Feld Typ Pflicht Beschreibung
snapshot string ja The snapshot to restore.
version string ja Its version, typed by the administrator as the confirmation.
Feld Typ Pflicht Beschreibung
layout JsonElement ja The layout now saved for this device.
version integer (int64) ja Its version, for If-Match on the next save.

Typ: AckMessage | SnapshotMessage | EventMessage | ErrorMessage

What the signed-in user may do outside shared folders, for the desktop: which apps it shows and whether the power menu is there.

Feld Typ Pflicht Beschreibung
admin boolean ja Administrators may do everything.
rights string[] ja The special rights: right:admin, right:desktopLogin, right:sshLogin, right:power.
protocols string[] ja The file protocols: protocol:smb, protocol:sftp, protocol:webdav, protocol:ftp.
apps string[] ja The ids of the apps of IReadOnlyList<string> PermissionCatalog.Apps the user may open.
Feld Typ Pflicht Beschreibung
username string ja
password string ja
displayName null | string nein
Feld Typ Pflicht Beschreibung
user UserInfo ja The administrator, already signed in.
recoveryKey string ja Shown exactly once. It is the only way to reset the administrator password.
Feld Typ Pflicht Beschreibung
required boolean ja True until the first administrator exists.
hostname string ja Shown on the setup and sign-in screens, so users with several servers know where they sign in.
language string ja The system language, for the sign-in page and everyone whose browser asks for a language Pithyx does not have.
region null | string ja The ISO 3166 country code whose formats every user sees, or null to follow each user’s language.
installer boolean ja True on the live system of the ISO: the desktop shows the installer (/api/installer) instead of the sign-in.

Typ: "none", "read", "readWrite"

Typ: "keep", "destroy", null

A share with what the Shared folders page shows. Administrators only.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id.
name string ja Name shown to users.
description string ja Free text for administrators and users, may be empty.
path string ja The share root on the host.
pool null | string ja The pool of the share’s dataset; null for a folder share.
dataset null | string ja Full name of the share’s dataset, for example tank/pithyx/shares/media; null for a folder share (development only).
usedBytes null (int64) | integer (int64) ja Space the dataset uses with its snapshots; null for a folder share or while the dataset is not there (pool missing).
availableBytes null (int64) | integer (int64) ja Space still available to the dataset; null like UsedBytes.
quotaBytes null (int64) | integer (int64) ja The dataset’s quota, or null for none.
readUsers integer (int32) ja Active users other than administrators who may read, through their own grants or their groups.
readWriteUsers integer (int32) ja Active users other than administrators who may read and write, through their own grants or their groups.
restorePoints null | boolean ja Whether daily restore points (snapshots kept 7 days) are on; null for a folder share.
smb boolean ja Whether SMB offers the shared folder (dataset shares only).
sftp boolean ja Whether SFTP shows the shared folder (dataset shares only).
smbEncrypt boolean ja Whether SMB clients must encrypt.
webDav boolean ja Whether WebDAV offers the shared folder.
ftp boolean ja Whether FTP offers the shared folder.

Who may use a shared folder. Administrators only.

Feld Typ Pflicht Beschreibung
grants SubjectGrant[] ja The grants of users and groups on it; the editor changes these.
users ShareUserAccess[] ja Every user with the access it ends up with, administrators and deactivated users included.
Feld Typ Pflicht Beschreibung
grants SubjectGrant[] ja Every grant the shared folder should have; the others go.

A share the user can use.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id; file paths are relative to the share.
name string ja Name shown to users: the shared folder’s name, home for the caller’s home, the folder name for another user’s home.
access ShareAccess ja The user’s access: read or read and write.
path null | string ja The share root on the host. Only administrators get it.
unavailable null | string nein Why its files cannot be reached now (ShareAvailability), or null when they can.
kind ShareKind nein A shared folder, the caller’s home or another user’s home.

What a share is.

Typ: "share", "home", "userHome"

Snapshot and event of shares/list.

Feld Typ Pflicht Beschreibung
revision integer (int64) ja Changes whenever a user’s list of usable shares may have changed; compare it, do not count on it.

A shared folder action to plan. share.create needs Name and Pool (Description is optional); share.delete needs ShareId, ConfirmName and Data.

Feld Typ Pflicht Beschreibung
action string ja share.create or share.delete.
name null | string nein Name of the new shared folder; its dataset name is derived from it and shown in the plan.
pool null | string nein Pool of the new shared folder; it needs the Pithyx layout (&lt;pool&gt;/pithyx/shares).
description null | string nein Description of the new shared folder.
shareId null (int64) | integer (int64) nein The shared folder to delete.
confirmName null | string nein The shared folder’s name, typed by the user to delete it.
data null | ShareDataChoice nein keep leaves the dataset or folder with its files, destroy destroys the dataset and its snapshots (dataset shares only).

Changes of a share; fields left out stay. The dataset is never renamed by this.

Feld Typ Pflicht Beschreibung
name null | string nein New name shown to users, unique like every share name.
description null | string nein New description, at most 200 characters, empty to remove it.
smb null | boolean nein Offers the shared folder over SMB or stops it.
sftp null | boolean nein Shows the shared folder over SFTP or hides it.
smbEncrypt null | boolean nein Requires SMB clients to encrypt, or lets them choose.
webDav null | boolean nein Offers the shared folder over WebDAV or stops it.
ftp null | boolean nein Offers the shared folder over FTP or stops it.

One user’s effective access to a shared folder.

Feld Typ Pflicht Beschreibung
userId integer (int64) ja The user’s id.
username string ja Login name.
displayName null | string ja Name shown, if set.
administrator boolean ja Administrators use every shared folder with read and write.
disabled boolean ja Deactivated users use none.
access ShareAccess ja What the user ends up with: none, read or readWrite.

SMART health of one disk as last read. The API serves it from memory; reading it never runs a command.

Feld Typ Pflicht Beschreibung
diskId string ja The disk’s id.
state string ja passed, warning (reallocated, pending or uncorrectable sectors, media errors or a failed self-test), failed (the drive predicts its failure), unsupported (no SMART, see Reason) or unknown (not read yet, asleep since the daemon started, or the read failed).
reason null | string ja For unsupported: virtual (a disk of a virtual machine) or not_available. For unknown: asleep, not_read or read_failed. Otherwise null.
asleep boolean ja True when the last check found the disk asleep; the values are then from ReadAt.
temperatureCelsius null (int32) | integer (int32) ja Current temperature, if reported.
powerOnHours null (int64) | integer (int64) ja Power-on time, if reported.
reallocatedSectors null (int64) | integer (int64) ja ATA attribute 5, raw value.
pendingSectors null (int64) | integer (int64) ja ATA attribute 197, raw value.
uncorrectableSectors null (int64) | integer (int64) ja ATA attribute 198, raw value.
mediaErrors null (int64) | integer (int64) ja NVMe media and data integrity errors.
criticalWarning null (int32) | integer (int32) ja NVMe critical warning bits; not 0 means the drive reports a critical condition.
lastSelfTest null | string ja Result of the newest self-test: passed, failed, aborted or running; null without one.
readAt null (date-time) | string (date-time) ja When SMART data was last read (UTC); null if never.
checkedAt string (date-time) ja When the disk was last checked (UTC), including checks that found it asleep.
Feld Typ Pflicht Beschreibung
dataset string ja The dataset the snapshot belongs to, for example tank/pithyx/shares/media.
name string ja The part after @, for example pithyx-daily-20260927T000000Z.
createdAt string (date-time) ja When ZFS took it (UTC), by the clock the box had then.
usedBytes integer (int64) ja Space only this snapshot holds.
referencedBytes integer (int64) ja Data the snapshot references.
holds integer (int32) ja Number of holds (userrefs); a held snapshot cannot be destroyed.
createTxg integer (int64) ja The transaction group it was taken in: the order of snapshots, whatever the clock said.
fullName null | string ja
pithyxKind null | string ja The schedule kind of a snapshot Pithyx created, or null for every other snapshot.
Feld Typ Pflicht Beschreibung
dataset string ja The dataset to snapshot.

A read-only snapshot of the system (@ with /var/lib/pithyx), taken before an update.

Feld Typ Pflicht Beschreibung
name string ja Its folder in /@snapshots, the UTC time it was taken (20261009T214000Z).
version string ja The Pithyx version it holds.
createdAt string (date-time) ja When it was taken.
kernel string ja The kernel release it booted with; its GRUB entry boots that kernel.
reason string ja Why it was taken, for example update to 0.2.0.

Response of GET /api/storage/snapshots.

Feld Typ Pflicht Beschreibung
dataset string ja The dataset.
snapshots Snapshot[] ja Its snapshots, oldest first.

The full current state of a topic, sent after sub. Only changes follow as events.

Feld Typ Pflicht Beschreibung
id string ja
topic string ja
data object ja
type "snap" ja
requestId string ja
Feld Typ Pflicht Beschreibung
dataset string ja The dataset.
name string ja The exact snapshot name after @.
Feld Typ Pflicht Beschreibung
kind string ja hourly, daily, weekly or monthly.
enabled boolean ja Whether the schedule takes snapshots.
keep integer (int32) ja How many of its snapshots it keeps (1 to 1000).

Schedules of a dataset: all four kinds, in the order hourly, daily, weekly, monthly.

Feld Typ Pflicht Beschreibung
dataset string ja The dataset.
schedules SnapshotSchedule[] ja One entry per kind; kinds left out of a PUT stay as they are.

An uploaded update file that passed every check and waits for “Install”. TrustedSignature: False only for a development file on a development box.

Feld Typ Pflicht Beschreibung
version string ja
channel string ja
minimumVersion string ja
changelog string ja
size integer (int64) ja
trustedSignature boolean ja
packages integer (int32) ja
kernel string ja
publishedAt string (date-time) ja

A storage problem that exists now. Alerts are derived from the current state, never stored.

Feld Typ Pflicht Beschreibung
key string ja Stable key of the cause, for example pool.degraded:tank or disk.smart_failed:wwn-0x5000c500a1b2c3d4.
severity string ja warning or critical.
code string ja Message code in the notifications namespace (&lt;code&gt;.title, .body, .action).
params object ja Message parameters: strings and numbers.
since string (date-time) ja When the daemon first saw the cause (UTC); a restart starts it again.
muted boolean ja True when the user muted this alert at this severity or higher.

A disk with the guard’s verdict, for the Storage settings page.

Feld Typ Pflicht Beschreibung
disk Disk ja
guard GuardVerdict ja

Response of GET /api/storage/disks.

Feld Typ Pflicht Beschreibung
disks StorageDisk[] ja Every disk with its verdict.
environment string ja dev or prod; on dev only the declared test disks can be used.

Snapshot and event of storage/alerts, and response of GET /api/storage/alerts.

Feld Typ Pflicht Beschreibung
alerts StorageAlert[] ja Current alerts, critical first, with the user’s mute flags.
smart SmartReport[] ja SMART state of every disk.

Response of POST /api/storage/plans. Nothing was run.

Feld Typ Pflicht Beschreibung
planId null | string ja Runs the plan exactly as shown with POST /api/storage/plans/{planId}/run; null while a disk is not allowed, and while RequiresConfirmName is true and the name was not typed yet.
disks GuardVerdict[] ja The guard’s verdict for every chosen disk, after probing them again.
commands null | PlannedCommand[] ja The exact commands, or null while a disk is not allowed.
datasets string[] ja For destroying or exporting a pool: every dataset that goes or becomes unavailable; for pool.import: the datasets it mounts. For destroying a dataset: the dataset, its children and every snapshot of them (dataset@snapshot), each dataset followed by its snapshots. For renaming a dataset: the dataset and its children, whose names change. For destroying a snapshot: the snapshot (dataset@snapshot); for rolling back: every newer snapshot, which goes too.
expiresAt string (date-time) ja Until when the plan may run.
warnings string[] ja Stable codes for what the user must know before running it: lowers_redundancy, replication_mismatch, irreversible and no_redundancy (adding a vdev: it tolerates fewer failed disks than the pool, it has a layout ZFS calls a replication mismatch, it can never be removed, it has no redundancy), irreversible (RAID-Z expansion), other_system (an import forced over another system’s claim), degraded (the pool is imported with devices missing), unmounted_datasets (Unmounted stay unmounted) and datasets_unavailable (exporting a pool with datasets in use); for a rollback changes_lost (every change since the snapshot is lost) and newer_snapshots (the listed newer snapshots are destroyed).
requiresConfirmName boolean ja True when the plan runs only with the pool’s name (for a rollback the dataset’s full name) typed in confirmName.
unmounted UnmountedDataset[] ja For pool.import: datasets that stay unmounted, and why; those that would hide part of the system also get canmount=noauto.

A destructive storage action to plan. Which fields an action needs: pool.create Pool, Layout, DiskIds, Encryption (and Confirmations for disks that are not empty); pool.destroy Pool and ConfirmName; pool.replace Pool, Vdev and one disk in DiskIds with its serial in Confirmations; pool.spare.add Pool and one disk; pool.spare.remove, pool.offline and pool.online Pool and Vdev; pool.import.readonly PoolGuid from the import scan, NewName when the name is taken, and Force with the pool name in ConfirmName when the scan says needsForce; pool.import Pool (imported read-only), and Force with ConfirmName to force it; pool.export Pool; pool.vdev.add Pool, Layout (single, mirror, raidz1 to raidz3), DiskIds, Confirmations, and ConfirmName when the preview says so; pool.raidz.expand Pool, Vdev (the raidz vdev), one disk and ConfirmName; dataset.rename Pool, Dataset and NewName; dataset.set Pool, Dataset and at least one of QuotaBytes, ReservationBytes, Compression and RecordSizeBytes; dataset.destroy Pool, Dataset and ConfirmName; volume.create Pool, Name, SizeBytes and Sparse; snapshot.destroy Pool, Dataset and the snapshot’s Name; snapshot.rollback Pool, Dataset, the snapshot’s Name and the dataset’s full name in ConfirmName.

Feld Typ Pflicht Beschreibung
action string ja pool.create, pool.destroy, pool.replace, pool.spare.add, pool.spare.remove, pool.offline, pool.online, pool.import.readonly, pool.import, pool.export, pool.vdev.add, pool.raidz.expand, dataset.rename, dataset.set, dataset.destroy, volume.create, snapshot.destroy or snapshot.rollback.
pool string ja The pool, or the new pool’s name; for pool.import.readonly the scanned name (the GUID decides).
layout null | string nein single, stripe, mirror, mirrors (pairs), raidz1, raidz2 or raidz3.
diskIds null | string[] nein The disks to use, by id.
name null | string nein Name of a new volume (one path component), or the snapshot after @ for the snapshot actions. Shared folders are created with POST /api/shares/plans.
vdev null | string nein GUID of the device to replace, take offline, bring online or remove, or of the raidz vdev to expand.
encryption null | string nein The answer to the encryption question of a new pool: none, or key once the key vault exists.
confirmName null | string nein The pool’s name, or the dataset’s full name, typed by the user where the preview says requiresConfirmName and to destroy.
confirmations null | map of string nein Serial numbers the user typed, by disk id.
dataset null | string nein Full name of the dataset or volume to rename, change or destroy, on Pool.
newName null | string nein The new last component of a renamed dataset (it stays below the same parent), or for pool.import.readonly the name to import the pool under when its own is taken.
quotaBytes null (int64) | integer (int64) nein New quota in bytes (dataset, children and snapshots), 0 for none; null leaves it.
reservationBytes null (int64) | integer (int64) nein New reservation in bytes (dataset, children and snapshots), 0 for none; null leaves it.
compression null | string nein New compression: off, lz4, zle, zstd, zstd-1 to zstd-19, gzip, gzip-1 to gzip-9; null leaves it.
recordSizeBytes null (int64) | integer (int64) nein New record size of a file system, a power of two from 4 KiB to 1 MiB; null leaves it.
sizeBytes null (int64) | integer (int64) nein Size of a new volume, at least 1 MiB; rounded up to whole 16 KiB blocks.
sparse null | boolean nein True for a volume that reserves no space up front.
poolGuid null | string nein For pool.import.readonly: the pool’s numeric identifier from the import scan.
force null | boolean nein For imports: import a pool that was last used by another system; needs ConfirmName.
Feld Typ Pflicht Beschreibung
kind string ja scrub, shortSelfTest or longSelfTest.
target string ja The pool name for scrubs; empty for self-tests, which cover every disk with SMART.
frequency string ja off, weekly or monthly.
lastRunAt null (date-time) | string (date-time) ja When it last ran (UTC); for self-tests the oldest of all disks. Null if never.
nextRunAt null (date-time) | string (date-time) ja When it runs next (UTC); null when it is off or has nothing to run on.

Response of GET /api/storage/schedules.

Feld Typ Pflicht Beschreibung
schedules StorageSchedule[] ja

Body of PUT /api/storage/schedules.

Feld Typ Pflicht Beschreibung
kind string ja scrub, shortSelfTest or longSelfTest.
target string ja The pool name for scrubs; empty for self-tests.
frequency string ja off, weekly or monthly.

An app of a catalog, at the newest version this box can run.

Feld Typ Pflicht Beschreibung
catalog string ja The catalog’s id.
kind CatalogKind ja The catalog’s kind; custom ones are unverified.
id string ja The app id.
version string ja The newest version for this box.
name map of string ja Names by language.
description null | map of string ja Descriptions by language, if any.
author null | string ja The author’s name, if the manifest has one.
license string ja The SPDX license.
icon string ja The icon’s URL.
installedVersion null | string ja The installed version, if the app is installed.
update boolean ja The installed app is older than Version.

The detail page of a catalog app.

Feld Typ Pflicht Beschreibung
app StoreApp ja The app at its newest fitting version.
manifest JsonElement ja That version’s manifest.
screenshots string[] ja URLs of its screenshots, in order.
homepage null | string ja The manifest’s homepage, if any.
source string ja Where its source is: the catalog repository at the commit CI built, in the app’s folder.
versions StoreAppVersion[] ja Every published version, newest first.

Apps of the enabled catalogs, sorted by name.

Feld Typ Pflicht Beschreibung
apps StoreApp[] ja

A published version of a catalog app.

Feld Typ Pflicht Beschreibung
version string ja The version.
publishedAt string (date-time) ja When the catalog published it.
pithyx string ja The range of Pithyx versions it runs on.
fits boolean ja This box can install it (its version and architecture).
dataVersion null (int32) | integer (int32) ja Its data version, if it declares one.

Which branch of every catalog the box reads: catalog (stable) or catalog-next (beta).

Typ: "stable", "beta"

The Store’s settings.

Feld Typ Pflicht Beschreibung
policy UpdatePolicy ja What a check does with newer versions; each app may override it.
time string ja The daily check time as HH:mm in the box’s time zone; the box adds its own delay of up to an hour.
channel StoreChannel ja The branch every catalog is read from.
nextCheckAt string (date-time) ja When the next check runs (UTC), the box’s delay included.
lastCheckAt null (date-time) | string (date-time) ja When the last check ran (UTC), if one did.
Feld Typ Pflicht Beschreibung
policy UpdatePolicy ja What a check does with newer versions.
time string ja HH:mm in the box’s time zone.
channel StoreChannel ja stable or beta.

The Store for administrators: the snapshot and every event of the topic store/admin.

Feld Typ Pflicht Beschreibung
settings StoreSettings ja The settings with the next check.
catalogs CatalogInfo[] ja Every catalog, the project’s first.
updates AppUpdate[] ja Newer versions of installed apps, by app id.

A user’s or a group’s access to one shared folder.

Feld Typ Pflicht Beschreibung
subjectKind SubjectKind ja user or group.
subjectId integer (int64) ja The user’s or the group’s id.
level GrantLevel ja read or readWrite.

Who a grant is for. Apps join in M4; until then nothing grants to them.

Typ: "user", "group", "app"

Feld Typ Pflicht Beschreibung
hostname string ja The host name of the box.
uptimeSeconds number (double) ja Seconds since boot.
loadAverage number (double)[] ja Over 1, 5 and 15 minutes.
cpuPercent null (double) | number (double) ja Usage since the previous sample; null for the very first one.
memoryTotalBytes integer (int64) ja Physical memory.
memoryAvailableBytes integer (int64) ja Memory available for new work without swapping, including reclaimable caches.
Feld Typ Pflicht Beschreibung
version string ja The Pithyx version.
commit null | string ja The git commit it was built from, if known.
operatingSystem string ja The distribution, for example “Debian GNU/Linux 13 (trixie)”.
kernel string ja The running Linux kernel.
machine null | string ja Vendor and product of the board or virtual machine, if the firmware reports them.
cpuModel null | string ja The processor, if known.
cpuCores integer (int32) ja Logical processors.
memoryTotalBytes integer (int64) ja Physical memory.
hostname string ja The host name.
uptimeSeconds number (double) ja Seconds since boot.

The regional settings of the box.

Feld Typ Pflicht Beschreibung
language string ja The system language: the sign-in page and every user on “Automatic” whose browser asks for a language Pithyx does not have get it, and so do messages the box sends on its own. One of IReadOnlyList<string> SystemRegion.Languages.
region null | string ja ISO 3166 country code such as DE or US whose date, time and number formats every user sees, or null to follow each user’s language.

Body of POST /api/files/{shareId}/thumbnails.

Feld Typ Pflicht Beschreibung
folder null | string ja The folder shown, relative to the share.
names string[] ja Entries of that folder on screen, at most 200.
size ThumbnailSize ja small (64 px, list rows) or large (256 px, grid tiles).

The two thumbnail sizes: rows of the list, tiles of the grid (both twice their CSS size for sharp screens).

Typ: "small", "large"

Event of thumbnails/&lt;share&gt;/&lt;folder&gt;: thumbnails that were rendered or refused.

Feld Typ Pflicht Beschreibung
items object[] ja Each with ready and its version, or none.
size "small", "large" ja The two thumbnail sizes: rows of the list, tiles of the grid (both twice their CSS size for sharp screens).
Feld Typ Pflicht Beschreibung
name string ja The entry.
status ThumbnailStatus ja Whether it has a thumbnail.
version null | string ja For ready: changes whenever the file changes; pass it as v so a new version is loaded.

Response of POST /api/files/{shareId}/thumbnails. Nothing was rendered while answering.

Feld Typ Pflicht Beschreibung
topic string ja Subscribe to it for the thumbnails that are still pending.
items ThumbnailState[] ja One state per distinct name asked for.

Whether a thumbnail can be shown now.

Typ: "ready", "pending", "none"

Snapshot of a thumbnail topic; the events carry everything.

Feld Typ Pflicht Beschreibung
watching boolean ja Always true.
Feld Typ Pflicht Beschreibung
timeZone string ja IANA name of the system time zone.
synchronized boolean ja Whether the clock is synchronized with a time server.
ntpServers string[] ja Time servers Pithyx configured; empty means the distribution’s defaults.
timeZones string[] ja Every time zone the system knows.
Feld Typ Pflicht Beschreibung
timeZone string ja IANA name of the new time zone.
ntpServers string[] ja At most eight host names or addresses; empty for the distribution’s defaults.

Names the box’s own certificate covers besides its host name and addresses.

Feld Typ Pflicht Beschreibung
extraNames string[] ja DNS names or addresses inside the authority’s scope, at most 20.

Settings > Certificates.

Feld Typ Pflicht Beschreibung
https boolean ja The web interface speaks HTTPS on 7484 (80 and 443 redirect there); false only in development and simulation.
source ActiveCertificateSource ja Which certificate the box presents.
active CertificateInfo ja The certificate the box presents now.
authority AuthorityInfo ja The box’s own authority.
boxNames string[] ja The names and addresses the box’s own certificate covers.
extraNames string[] ja Names an administrator added to the box’s own certificate.
suggestedDomains string[] ja The DNS suffixes a new restricted authority starts with: the local ones, the host name and the network’s search domains.
custom null | CertificateInfo ja One certificate as Settings shows it.
issued IssuedCertificate[] ja The certificates issued for other devices, newest first.
Feld Typ Pflicht Beschreibung
apps AppList ja
apps/+/context AppContextState ja
apps/admin AdminAppList ja
files/+/+ FolderChanges ja
jobs Job ja
jobs/+ Job ja
notifications NotificationEvent ja
session/permissions SessionPermissions ja
shares/list ShareListRevision ja
storage/alerts StorageHealth ja
storage/disks DisksChanged ja
storage/pools PoolList ja
store/admin StoreState ja
system/info SystemInfo ja
system/network NetworkState ja
system/processes ProcessList ja
system/resources ResourceSample ja
system/updates UpdateStatus ja
thumbnails/+/+ ThumbnailsReady ja
Feld Typ Pflicht Beschreibung
apps AppList ja
apps/+/context AppContextState ja
apps/admin AdminAppList ja
files/+/+ FolderWatchState ja
jobs JobList ja
jobs/+ Job ja
notifications NotificationList ja
session/permissions SessionPermissions ja
shares/list ShareListRevision ja
storage/alerts StorageHealth ja
storage/disks DiskList ja
storage/pools PoolList ja
store/admin StoreState ja
system/info SystemInfo ja
system/network NetworkState ja
system/processes ProcessList ja
system/resources ResourceSnapshot ja
system/updates UpdateStatus ja
thumbnails/+/+ ThumbnailWatch ja
Feld Typ Pflicht Beschreibung
code string ja
Feld Typ Pflicht Beschreibung
password string ja
Feld Typ Pflicht Beschreibung
secret string ja Base32 secret for manual entry.
uri string ja otpauth:// URI for the QR code.
Feld Typ Pflicht Beschreibung
challenge string ja From the login response.
code null | string nein Six-digit code from the authenticator app.
recoveryCode null | string nein One of the recovery codes shown when TOTP was enabled, instead of a code.

One item in a share’s recycle bin.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Id for restoring or deleting it.
name string ja Its name when it was deleted.
originalPath string ja Where it was, relative to the share; restoring puts it back there.
kind FileKind ja File, folder, symlink or another kind.
size integer (int64) ja Bytes, for a folder everything inside it.
deletedAt string (date-time) ja When it was deleted, UTC.
deletedBy null | string ja User name of who deleted it, if that user still exists.
expiresAt null (date-time) | string (date-time) ja When it is deleted for good, or null when the share keeps deleted items until emptied.
Feld Typ Pflicht Beschreibung
ids integer (int64)[] ja Items of the share’s recycle bin, at most 1000.
onConflict null | ConflictPolicy nein For restoring: what happens when the original place is taken; rename when left out.
Feld Typ Pflicht Beschreibung
items TrashItem[] ja Newest first.
nextCursor null | string ja Pass as cursor for the next page; null on the last page.
retentionDays integer (int32) ja Days the share keeps deleted items; 0 keeps them until the bin is emptied.
Feld Typ Pflicht Beschreibung
retentionDays integer (int32) ja 0 to 3650; 0 keeps deleted items until the bin is emptied.

What 443 and 80 do with a name no enabled host has.

Typ: "redirect", "notFound"

Feld Typ Pflicht Beschreibung
name string ja The dataset.
mountPoint string ja Its mount point.
reason string ja Why it stays unmounted: system_path (/ or at or below a system directory), shadows_mount (it would hide something mounted there or below), duplicate_mountpoint (another dataset of the pool mounts there first) or key_unavailable (encrypted and locked).
Feld Typ Pflicht Beschreibung
enabled boolean ja False hides the app from everybody and stops serving its frontend; its data and grants stay.
Feld Typ Pflicht Beschreibung
enabled null | boolean nein Switches the catalog on or off; null leaves it.
registryToken null | string nein user:token to pull the catalog’s private images; empty removes it, null leaves it.

One update or rollback of the system. Kind: update or rollback. Source: online (from the channel), file (uploaded), recovery (the console menu) or manual (a rollback from Settings). Snapshot: The snapshot taken before an update, or the one a rollback restored. State: running, restarting, succeeded, failed (nothing changed) or rolled_back.

Feld Typ Pflicht Beschreibung
id integer (int64) ja
kind string ja
source string ja
fromVersion string ja
toVersion string ja
snapshot null | string ja
state string ja
errorCode null | string ja
errorParams null | object ja
startedAt string (date-time) ja
finishedAt null (date-time) | string (date-time) ja

Typ: "automatic", "notify", "none", null

Why the last check could not read the channel, as an error code with its params.

Feld Typ Pflicht Beschreibung
code string ja
params object ja
Feld Typ Pflicht Beschreibung
checkEnabled boolean ja The daily check (on by default; it only notifies).
channel string ja stable or beta.

A source file an administrator saved in Settings for the recovery menu, which alone can switch to it.

Feld Typ Pflicht Beschreibung
name string ja
url string ja
keys UpdateSourceKey[] ja
savedBy string ja
savedAt string (date-time) ja

The update source the box follows. Official: True for the Pithyx project’s keys; false after a switch to another source in the recovery menu.

Feld Typ Pflicht Beschreibung
name string ja
url string ja
official boolean ja
keys UpdateSourceKey[] ja

A key of an update source as Settings shows it.

Feld Typ Pflicht Beschreibung
keyId string ja
publicKey string ja
channels string[] ja

Settings > Updates for administrators (topic system/updates). Supported: Whether updates and rollbacks apply here; false on a machine not laid out by the installer. UnsupportedReason: not_btrfs, not_subvolume, not_array or findmnt. RunningJobId: The job of an update or rollback that runs now. Snapshots: The kept snapshots, newest first; each can be restored. Source: The update source the box follows; only the recovery menu switches it. SourceCandidate: A source file saved in Settings for the recovery menu, or null.

Feld Typ Pflicht Beschreibung
installedVersion string ja
channel string ja
checkEnabled boolean ja
lastCheckAt null (date-time) | string (date-time) ja
nextCheckAt null (date-time) | string (date-time) ja
checking boolean ja
available null | AvailableUpdate ja The newest version of the box’s channel when it is newer than the installed one. Installable: False when the box is older than MinimumVersion and needs a version in between first.
debian null | DebianUpdates ja The Debian updates apt offers; the kernel and ZFS never come from Debian.
problem null | UpdateProblem ja Why the last check could not read the channel, as an error code with its params.
supported boolean ja
unsupportedReason null | string ja
staged null | StagedUpdate ja An uploaded update file that passed every check and waits for “Install”. TrustedSignature: False only for a development file on a development box.
runningJobId null (int64) | integer (int64) ja
history UpdateHistoryEntry[] ja
snapshots SnapshotInfo[] ja
source UpdateSourceInfo ja
sourceCandidate null | UpdateSourceCandidate ja A source file an administrator saved in Settings for the recovery menu, which alone can switch to it.

The result of deleting a user.

Feld Typ Pflicht Beschreibung
job null | Job ja A long operation of a user, such as copying files. Also the data of the jobs/{id} topics.

The rights of a user for the editor. Administrators only.

Feld Typ Pflicht Beschreibung
grants GrantEntry[] ja The user’s own grants; the editor changes these.
inherited InheritedGrant[] ja What its groups give it; changed on the group.
effective SessionPermissions ja What the user may do: the union of both, or everything for an administrator.

The signed-in user.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id.
username string ja Login name.
displayName null | string ja Name shown, if set.
isAdmin boolean ja Whether the user has the administrator right, its own or through a group.
totpEnabled boolean ja Whether the user signs in with a second factor.
permissions SessionPermissions ja What the user may do; the topic session/permissions sends changes.
groups GroupRef[] ja The user’s groups by name, without the built-in group every user is in; apps get them in their context.

A user as the Users page shows it. Administrators only.

Feld Typ Pflicht Beschreibung
id integer (int64) ja Stable id.
username string ja The Linux user name, lower case.
displayName null | string ja Shown instead of the user name, if set.
isAdmin boolean ja Whether the user has the administrator right, its own or through a group; administrators have every right.
uid null (int64) | integer (int64) ja The Linux uid from the Pithyx range (20000 to 29999), never reused.
totpEnabled boolean ja Whether the user signs in with a second factor.
createdAt string (date-time) ja When the user was created, UTC.
home null | string ja The user’s home folder on a pool, or null when there is no pool yet.
disabled boolean ja Deactivated: cannot sign in, and the Linux account is expired.
rights string[] ja The special rights the user has (right:admin, right:desktopLogin, right:sshLogin, right:power), its own and through its groups; a deactivated user gets them back when activated.
protocols string[] ja The file protocols the user may use (protocol:smb, protocol:sftp, protocol:webdav, protocol:ftp), the same way.
fileServicePassword boolean ja Whether SMB and SFTP know the user’s password. They learn it when the user signs in on the web or an administrator sets it; until then the user cannot use them.
groupIds integer (int64)[] ja The groups the user is a member of; the built-in group users, which has everybody, is left out.

Fields left out stay as they are.

Feld Typ Pflicht Beschreibung
displayName null | string nein An empty text removes the display name.
disabled null | boolean nein Deactivates or activates the user; deactivating ends the user’s sessions. Nobody deactivates themselves or the last active administrator.
groupIds null | integer (int64)[] nein Every group the user should be a member of, besides the built-in group users; the user leaves the others.
Feld Typ Pflicht Beschreibung
name string ja Vdev name as ZFS shows it: raidz1-0, mirror-1 or the device’s by-id name.
vdevGuid string ja Vdev GUID as decimal text; names a device in commands even when it is missing.
type string ja ZFS vdev type: disk, file, mirror, raidz, draid, spare, replacing and so on.
role string ja What the vdev is for: data, log, cache, special, dedup or spare.
state string ja ZFS state of the vdev.
path null | string ja Device path of a leaf vdev, usually below /dev/disk/by-id.
parityDisks null (int32) | integer (int32) ja Parity level of a raidz vdev (1 to 3), otherwise null.
readErrors integer (int64) ja Read errors since import or the last clear.
writeErrors integer (int64) ja Write errors since import or the last clear.
checksumErrors integer (int64) ja Checksum errors since import or the last clear.
children Vdev[] ja Child vdevs.
missing boolean nein True for a leaf whose disk is not connected, also while ZFS has not noticed yet (see PoolHealth).
serial null | string nein Serial of the disk a leaf is on, as last seen connected, if known.
Feld Typ Pflicht Beschreibung
parent string ja The network card or bond that carries the VLAN’s tagged frames.
id integer (int32) ja The 802.1Q VLAN id, 1 to 4094.

Typ: 1000, 1001, 1008, 1009, 4401, 4403

Feld Typ Pflicht Beschreibung
appId string ja The app the preference belongs to.
width integer (int32) ja Last free width of the app’s windows in CSS pixels.
height integer (int32) ja Last free height in CSS pixels.
Feld Typ Pflicht Beschreibung
width integer (int32) ja
height integer (int32) ja