tino.routers

tino.routers.buckets

REST endpoints for bucket CRUD operations.

async tino.routers.buckets.create_bucket(body: BucketCreate, user=Depends(dependency=<function require_global_admin>, use_cache=True, scope=None), svc: BucketService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Create a new bucket (initializes a git repo with .meta.yml).

async tino.routers.buckets.delete_bucket(slug: str, user=Depends(dependency=<function require_global_admin>, use_cache=True, scope=None), svc: BucketService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Delete a bucket and its git repo from disk.

async tino.routers.buckets.get_bucket(slug: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: BucketService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Get metadata for a single bucket.

async tino.routers.buckets.list_buckets(user=Depends(dependency=<function get_current_user>, use_cache=True, scope=None), svc: BucketService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

List buckets the user has access to, with their resolved role.

async tino.routers.buckets.update_bucket(slug: str, body: BucketUpdate, user=Depends(dependency=<function require_global_admin>, use_cache=True, scope=None), svc: BucketService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Update a bucket’s description or access rules.

tino.routers.collab

WebSocket endpoint for real-time collaborative editing via Yjs CRDT.

async tino.routers.collab.collab_websocket(websocket: WebSocket, slug: str, path: str)

Yjs WebSocket endpoint for real-time collaborative editing of a file.

tino.routers.compile

REST endpoints for compiling Typst files to SVG or PDF.

async tino.routers.compile.compile_pdf(slug: str, path: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: CompilerService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Compile a .typ file and return the PDF.

async tino.routers.compile.compile_svg(slug: str, path: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: CompilerService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Compile a .typ file and return a list of SVG strings (one per page).

tino.routers.events

WebSocket endpoint for bucket-level file change notifications.

async tino.routers.events.bucket_events(websocket: WebSocket, slug: str)

Subscribe to file-change events for a bucket.

tino.routers.files

REST endpoints for file CRUD within a bucket’s working tree.

async tino.routers.files.create_file(slug: str, body: FileCreate, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Create a new file in the bucket. Fails if the file already exists.

async tino.routers.files.delete_dir(slug: str, path: str, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), collab: CollabManager = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Delete a directory and all its contents.

async tino.routers.files.delete_file(slug: str, path: str, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), collab: CollabManager = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Delete a file from the bucket’s working tree.

async tino.routers.files.list_files(slug: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

List all files and directories in a bucket (excludes .git and .meta.yml).

async tino.routers.files.raw_file(slug: str, path: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Serve a file’s raw content (for images, binary previews, etc.).

async tino.routers.files.read_file(slug: str, path: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Read a single file’s content by path.

async tino.routers.files.rename_dir(slug: str, body: dict, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), collab: CollabManager = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Rename/move a directory and all its contents.

async tino.routers.files.rename_file(slug: str, body: dict, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), collab: CollabManager = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Rename/move a single file.

async tino.routers.files.save_file(slug: str, path: str, body: FileSave, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Overwrite a file’s content (used by manual save and auto-save).

async tino.routers.files.upload_files(slug: str, files: list[UploadFile] = File(PydanticUndefined), prefix: str = '', user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: FileService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Upload one or more binary/text files via multipart form data. ZIP files are extracted.

tino.routers.git

REST endpoints for git operations on a bucket’s repository.

async tino.routers.git.git_commit(slug: str, body: CommitRequest, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Stage the selected files and create a new commit.

async tino.routers.git.git_diff(slug: str, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), path: str | None = Query(None), ref: str | None = Query(None))

Return unified diffs.

Without ref the diff covers working-tree changes vs HEAD. With ref it covers the changes introduced by that commit (vs its parent).

async tino.routers.git.git_log(slug: str, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), path: str | None = Query(None), max_count: int = Query(50))

Return commit history, optionally filtered to a single file path.

async tino.routers.git.git_restore(slug: str, body: RestoreRequest, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None), collab: CollabManager = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Restore file(s) from a specific commit into the working tree.

async tino.routers.git.git_show(slug: str, ref: str, path: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Retrieve a file’s content at a specific commit ref.

async tino.routers.git.git_show_raw(slug: str, ref: str, path: str, _user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Serve a file’s raw bytes at a specific commit ref (for images).

async tino.routers.git.git_status(slug: str, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Return per-file working tree status (modified, untracked, deleted, staged).

async tino.routers.git.git_tree(slug: str, ref: str, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: GitService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

List all files at a specific commit ref.

tino.routers.templates

REST endpoints for browsing and initializing Typst templates.

async tino.routers.templates.init_template(slug: str, body: TemplateInit, user=Depends(dependency=<function _require_role.<locals>.dependency>, use_cache=True, scope=None), svc: TemplateService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Initialize a bucket from a Typst template via typst init.

async tino.routers.templates.list_local_templates(_user=Depends(dependency=<function get_current_user>, use_cache=True, scope=None), svc: TemplateService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Return templates from the local package directory.

async tino.routers.templates.list_typst_universe_templates(_user=Depends(dependency=<function get_current_user>, use_cache=True, scope=None), svc: TemplateService = Depends(dependency=<functools._lru_cache_wrapper object>, use_cache=True, scope=None))

Return all available Typst templates from the Typst Universe package index.