SDK
DriveNode
One file or folder of a workspace (`docs/PROTOCOL.md §9`) — the vault's index of it, never its content. Every node has its own DEK, wrapped for its security group in `encrypted_keys`; the name stays sealed in `encrypted_name` until `name_of` opens it on demand (doing it eagerly for a whole page would mean an AES-GCM per row nobody asked for). A folder has no content and no upload fields; a file's `size` is what the vault measured, never just what was declared.
class
Signature #
class DriveNode(*, node_id: str, workspace_id: str, security_group_id: str, kind: Literal['file', 'folder'] = 'file', status: Literal['pending', 'ready', 'failed'], exam_id: str | None = None, parent_id: str | None = None, mode: Literal['single', 'multipart'] | None = None, media_kind: Literal['image', 'video', 'dicom', 'other'] | None = None, declared_size: int | None = None, size: int | None = None, mime_type: str | None = None, encrypted_name: EncryptedPayload, encrypted_keys: dict[str, EncryptedPayload], storage_path: str | None = None, optimized_variants: list[OptimizedVariant] = [], processing_status: str | None = None, processing_error: str | None = None, total_size: int | None = None, created_by: str, created_at: str, completed_at: str | None = None, is_deleted: bool = False) Bases: BaseModel
One file or folder of a workspace (docs/PROTOCOL.md §9) — the vault's index of it, never its content.
Every node has its own DEK, wrapped for its security group in
encrypted_keys; the name stays sealed in encrypted_name until
name_of opens it on demand (doing it eagerly for a whole page would
mean an AES-GCM per row nobody asked for). A folder has no content and
no upload fields; a file's size is what the vault measured, never just
what was declared.
Members #
node_id: str #
attribute
workspace_id: str #
attribute
security_group_id: str #
attribute
kind: Literal['file', 'folder'] = 'file' #
attribute
status: Literal['pending', 'ready', 'failed'] #
attribute
exam_id: str | None = None #
attribute
parent_id: str | None = None #
attribute
mode: Literal['single', 'multipart'] | None = None #
attribute
media_kind: Literal['image', 'video', 'dicom', 'other'] | None = None #
attribute
declared_size: int | None = None #
attribute
size: int | None = None #
attribute
mime_type: str | None = None #
attribute
encrypted_name: EncryptedPayload #
attribute
encrypted_keys: dict[str, EncryptedPayload] #
attribute
storage_path: str | None = None #
attribute
optimized_variants: list[OptimizedVariant] = [] #
attribute
processing_status: str | None = None #
attribute
processing_error: str | None = None #
attribute
total_size: int | None = None #
attribute
created_by: str #
attribute
created_at: str #
attribute
completed_at: str | None = None #
attribute
is_deleted: bool = False #
attribute