delete_file
Deletes a file from the user’s storage canister. Revokes shares to avoid dangling references. Arguments:file_id: The ID of the file to delete.
Returns:
DeleteFileResponse: A response object indicating the result of the delete operation.
download_file
Downloads a file from the user’s storage canister, with optional version specification. Enforces role-based access: Editors can download any version; Viewers/E-Signers are restricted to the latest version. If the file being downloaded is not flagged as latest only editors owners should be eligible to download. Arguments:file_id: The ID of the file to download.
chunk: The chunk number to download.
opt version_id: Optional version ID (null for latest).
Returns:
FileDownloadResponse: A response object containing the file data and metadata.
get_alias_info
Returns information about a file alias that is being uploaded. Arguments:alias: The alias of the file to retrieve information for.
Returns:
Result: A response object containing the result of the alias lookup, including the file ID and metadata if found.
get_owned_files ( formerly: get_requests)
Returns a list of files owned by the user.
Returns:
vec PublicFileMetadata: A vector of PublicFileMetadata objects containing information about the files.
get_shared_files
Returns a list of files shared with a specific user. Called by user canister owner Arguments:user_id: The user principal of the user to retrieve shared files for.
Returns:
vec PublicFileMetadata: A vector of PublicFileMetadata objects containing information about the shared files.
public_key
Returns the public key of the user. Returns:blob: The public key of the user in binary format.
request_file
Creates a new file request for the user for uploading a file. Arguments:path: The path where the file will be uploaded.
opt description: Optional file note.
Returns:
RequestFileResponse: A response object containing the operation result. In case of success, it contains the file alias (UUIDv7) that can be used to upload the file.
revoke_share
Revokes access to a shared file for a specific user. Arguments:user_id: The user Principal of the user to revoke access from.
file_id: The ID of the file to revoke access to.
set_public_key
Updates the public key of the user. Arguments:blob: The new public key of the user in binary format.
share_file
Shares a file with a specific user, including access level. Arguments:user_id: The user Principal of the user to share the file with.
file_id: The ID of the file to share.
blob: file key encrypted with the user’s public key.
AccessLevel: The access level for the share (Viewer, Editor, E-Signer).
Returns:
FileSharingResponse: A response object indicating the result of the share operation.
share_file_with_users
Shares a file with multiple users, including access level. Arguments:user_ids: A vector of user IDs to share the file with.
file_id: The ID of the file to share.
vec blob: A vector of file keys encrypted with the users’ public keys.
vec AccessLevel:A Vector of the access level for the share (Viewer, Editor, E-Signer).
upload_file
Uploads the first chunk of a file to the user’s storage canister. Arguments:UploadFileRequest: An object containing the file data and metadata to upload.
Returns:
A response object indicating the result of the upload operation.
upload_file_atomic
Uploads a file atomically to the user’s storage canister. This method is only called by the owner of the user canister. Arguments:UploadFileAtomicRequest: An object containing the file data and metadata to upload. (includes opt description)
Returns:
UploadFileAtomicResponse: A response object indicating the result of the atomic upload operation.
upload_file_continue
Upload any chunk after the first one of a file that was started withupload_file, upload_file_atomic or update_file.
All chunks after the first one must be uploaded with this method.
Arguments:
UploadFileContinueRequest: An object containing the file data and metadata to continue the upload.
Returns:
UploadFileContinueResponse: A response object indicating the result of the continued upload operation.
update_file
Updates an existing file, uploading a new version. Available to Editors and Owners. Arguments:file_id: The ID of the file to update.
UploadFileRequest: The updated file data and metadata.
Returns:
UpdateFileResponse: A response object indicating the result of the update operation.
refresh_keys
Refreshes the encryption key for a file, re-encrypting the file and generating new keys for authorized users. Arguments:file_id: The ID of the file to refresh keys for.
Returns:
RefreshKeysResponse: A response object indicating the result of the key refresh operation.
get_file_history
Retrieves the history of a file, including versions, timestamps, and actions. Can be called by any user present in the shared list. Arguments:file_id: The ID of the file to get history for.
Returns:
FileHistoryResponse: A response object containing the file’s version history.
create_folder
Creates a new folder with configuration, including type (Shared/Private) and sharing details. Maps a path string (ending with/) with a specific visibility configuration.
Arguments:
FolderConfig: The folder configuration, including path, type, shared users, and access level.
Returns:
CreateFolderResponse: A response object indicating the result of the folder creation.
update_folder
Updates an existing folder’s configuration. Arguments:path: The path of the folder to update.
FolderConfig: The updated folder configuration.
Returns:
UpdateFolderResponse: A response object indicating the result of the folder update.
get_folder_files
Retrieves the files within a specific folder. Arguments:path: The path of the folder.
Returns:
FolderFilesResponse: A response object containing the list of files in the folder.
map_file_path
Maps a file to a specific path in the S3-like filesystem. Verifies Folder configurations and overwrites single file visibility. (folder path configuration has precedence over single file one. Executes sharing and revoke sharing) Arguments:path: The path to map the file to.
file_id: The ID of the file to map.
Returns:
MapFilePathResponse: A response object indicating the result of the mapping operation.
set_user_config
Sets the user’s configuration, including optional full name, optional photo, optional email (with verification if new or changed), handle (with verification if changed), visibility settings, and whitelist/blacklist for sharing eligibility. If an email is provided and not previously verified, triggers a verification challenge. If email was verified during the creation process, it is linked upon user canister creation. Arguments:UserConfig: The configuration details, such as optional full name, photo, email, visibility (Public/Private), and lists of allowed/blocked handles, emails, or domains.
Returns:
SetUserConfigResponse: A response object indicating the result of the configuration update.