Dataclasses for our internal and external APIs.

Module Contents

class maestral.core.AccountType[source]

Bases: enum.Enum

Enum of account types

Basic = 'basic'[source]
Pro = 'pro'[source]
Business = 'business'[source]
Other = 'other'[source]
class maestral.core.Team[source]

A group of users with joint access to shared folders

id: str[source]

Unique identifier of the team

name: str[source]

Display name of the team

class maestral.core.RootInfo[source]

Namespace info for the root of a shared filesystem

root_namespace_id: str[source]

Unique ID of the user’s root namespace

home_namespace_id: str[source]

Unique ID of the user’s personal namespace

This will be different from root_namespace_id when Maestral is set up to sync the shared folder of a team.

class maestral.core.UserRootInfo[source]

Bases: RootInfo

Namespace info for the root of a shared filesystem

class maestral.core.TeamRootInfo[source]

Bases: RootInfo

Namespace info for the root of a shared filesystem

home_path: str[source]

Path of the user’s personal home folder relative to the root namespace

Only present for accounts set up as part of a team when syncing the entire team’s folder.

class maestral.core.Account[source]

Represents the user’s account

account_id: str[source]

Unique account ID

display_name: str[source]

The user’s name for display purposes

email: str[source]

The user’s email address

email_verified: bool[source]

Whether the email address was verified

profile_photo_url: str | None[source]

A URL to the user’s photo

disabled: bool[source]

Whether the account is disabled

class maestral.core.FullAccount[source]

Bases: Account

Represents the user’s account and sync information

country: str | None[source]

The user’s country

locale: str[source]

The user’s locale

team: Team | None[source]

The team that a user belongs to, if any

team_member_id: str | None[source]

The member ID of user in a team, if any

account_type: AccountType[source]

The account type

root_info: RootInfo[source]

The user’s root namespace to sync

class maestral.core.SpaceUsage[source]

Space usage information

used: int[source]

Space used by in bytes

allocated: int[source]

Space available in bytes

class maestral.core.PersonalSpaceUsage[source]

Bases: SpaceUsage

Space usage information for a user

team_usage: SpaceUsage | None[source]

Space usage of a user’s team, if any

class maestral.core.WriteMode[source]

Bases: enum.Enum

Enum of write modes when uploading a file

Add = 'add'[source]
Update = 'update'[source]
Overwrite = 'overwrite'[source]
class maestral.core.Metadata[source]

Base class for sync item metadata

name: str[source]

Name of the file or folder

path_lower: str[source]

Normalised path on the server

path_display: str[source]

Cased path for display purposes and the local file system

class maestral.core.DeletedMetadata[source]

Bases: Metadata

Metadata of a deleted item

class maestral.core.FileMetadata[source]

Bases: Metadata

File metadata

id: str[source]

Unique ID on the server

client_modified: datetime.datetime[source]

Modified time in UTC as provided by clients

server_modified: datetime.datetime[source]

Server-side modified time in UTC

rev: str[source]

Unique ID of this version of a file

size: int[source]

File size in bytes

If the file is a symlink, path of the target relative to the root namespace

shared: bool[source]

Whether the file is shared

modified_by: str | None[source]

Unique ID of the account that created / modified this revision

is_downloadable: bool[source]

Whether the file can be downloaded

content_hash: str[source]

A content hash of the file

class maestral.core.FolderMetadata[source]

Bases: Metadata

Folder metadata

id: str[source]

Unique ID on the server

shared: bool[source]

Whether the folder is shared

class maestral.core.ListFolderResult[source]

Result from listing the contents of a folder

entries: list[Metadata][source]

List of entries

has_more: bool[source]

Whether there are more entries than listed

cursor: str[source]

Cursor to iterate and fetch more entries

class maestral.core.LinkAccessLevel[source]

Bases: enum.Enum

Enum of access levels to shared links

Viewer = 'viewer'[source]
Editor = 'editor'[source]
Other = 'other'[source]
class maestral.core.LinkAudience[source]

Bases: enum.Enum

Enum of shared link audience

Public = 'public'[source]
Team = 'team'[source]
NoOne = 'no_one'[source]
Other = 'other'[source]
class maestral.core.LinkPermissions[source]

Permissions for a shared link

can_revoke: bool[source]

If the link can be revoked

allow_download: bool[source]

If the link allows users to download the item

effective_audience: LinkAudience[source]

The effective audience of link (who can use it)

The type of access that the link grants to the item (how they can use it)

require_password: bool | None[source]

Whether a password is required when accessing the item through this link

Note that users who already have access to an item otherwise will not need a password regardless of this value.

class maestral.core.SharedLinkMetadata[source]

Metadata for a shared link

url: str[source]

The URL string

name: str[source]

The basename of the item

path_lower: str | None[source]

The normalised path of the item

expires: datetime.datetime | None[source]

Expiry time for a link in UTC

Permissions that a link grants its users

class maestral.core.ListSharedLinkResult[source]

Result from listing shared links

entries: list[SharedLinkMetadata][source]

List of shared link metadata

has_more: bool[source]

Whether there are more items to fetch

cursor: str[source]

A cursor to continue iterating over shared links

class maestral.core.UpdateCheckResult[source]

Information on update availability

update_available: bool[source]

Whether an update to Maestral is available

latest_release: str[source]

The latest release that can be updated to

release_notes: str[source]

Release notes for all releases between the currently running version up to and including the latest version