Skip to content

schemas

tit.server.schemas

Response models for the wire contract (contracts/openapi.yaml).

Names match the contract's components/schemas so --dump-openapi can be diffed against it by dev/contracts_check.py.

ViewerSceneFile

Bases: BaseModel

One dataset a scene references, as the Viewer page's preview strip shows it.

ViewerOpen

Bases: BaseModel

POST /api/view/open -- where the scene file was written, in both path languages.

V2 (docs/dev/DECISIONS.md § 2026-09-06 (Native panes, job rows and notebooks)). path is inside this container; host_path is the same file as the host sees it, and is what the Electron shell hands to the Tetravox desktop app. host_path is None when this server cannot know its project's host root (:mod:tit.server.host_path) -- the app then offers the scene as a download instead of a launch.

ExampleDataFile

Bases: BaseModel

One content-addressed asset of an example part (tit/examples/catalog.json).

ExampleDataPart

Bases: BaseModel

One independently downloadable piece of a dataset -- its NIfTIs, or its head model.

Each part is fetched and detected on its own, which is the whole point of the split: deleting sub-ernie/anat must not make ernie/headmodel look absent.

ExampleDataset

Bases: BaseModel

One head, with its provenance and its parts.

ExampleDataStatus

Bases: BaseModel

What this project holds of one part, read off disk, plus any download of it in flight.

installed/bytes need no network; downloading/queued/received/total are the live state of :mod:tit.server.routes.example_data's single background worker, which is why the renderer can poll one endpoint instead of subscribing to a job stream.

ProjectStatus

Bases: BaseModel

project_status.json as the API shows it. Only the keys the desktop reads or writes are typed; everything else the file holds passes through untouched.

SwapInfo

Bases: BaseModel

Swap, which the System page reads as a pressure signal rather than a capacity one.

ContainerInfo

Bases: BaseModel

One Docker container the daemon knows about (our siblings: QSIPrep/QSIRecon).

SelfProcessInfo

Bases: BaseModel

The server's own process — the one the jobs are children of.

NetIO

Bases: BaseModel

Cumulative interface counters since boot; the page shows the delta between snapshots.

DockerDf

Bases: BaseModel

docker system df -- the high-level "is the daemon filling the disk" answer.

OwnContainer

Bases: BaseModel

This server's own container, as docker inspect describes it.

DockerHealth

Bases: BaseModel

Everything the System page's Docker panel shows, in one bounded read.

Polled on its own (slower) TTL than the rest of the snapshot: /system/df walks the image graph and an inspect is a round trip, and neither changes at the 1-2 s cadence the CPU figures do. reachable: false with an error is a first-class answer -- the panel then says the daemon is unreachable rather than showing zeros that look like a healthy, empty daemon.

StorageKind

Bases: BaseModel

One class of project output, and what it costs on disk.

StorageItem

Bases: BaseModel

One named thing inside a kind -- "sub-101 - Flex search".

ProjectStorage

Bases: BaseModel

GET /api/system/storage -- what the project is using, by kind.

Separate from :class:SystemSnapshot because it is a different kind of read: the snapshot is a cheap sample taken every second, this is a full walk of the project that can take minutes on a large volume and is therefore cached on disk and refreshed in the background. scanning says a refresh is running right now and these are the previous numbers.

OverviewCounts

Bases: BaseModel

High-level output totals for one subject. Never a detailed tree (Results owns that).

OverviewReadiness

Bases: BaseModel

Can this subject run one workflow stage, and if not, the requirement that failed.

OverviewCoverage

Bases: BaseModel

One project-wide coverage tile: how many subjects have this artefact.

Overview

Bases: BaseModel

GET /api/catalog/overview -- everything the Overview page renders.

NotebookEntry

Bases: BaseModel

One notebook as the list shows it.

NotebookList

Bases: BaseModel

GET /api/notebooks.

Notebook

Bases: BaseModel

One notebook and its nbformat v4 document, verbatim.

content is deliberately an untyped object: the .ipynb IS the document (ARCHITECTURE §7.6), and narrowing it here would be this server deciding which keys of a format it does not own are allowed to survive.

Kernel

Bases: BaseModel

One running notebook kernel.

KernelList

Bases: BaseModel

GET /api/kernels -- what is running, and the limits it runs under.

MissingInput

Bases: BaseModel

One input a job needs that is not on disk (tit.jobs.preflight.MissingInput).

MissingInputs

Bases: BaseModel

The 422 body a job submission gets when its required inputs are not all on disk.

PreflightResult

Bases: BaseModel

POST /api/jobs/preflight: the sweep's findings, without submitting.