Files
synology-api/synology_api/drive_admin_console.py

315 lines
9.7 KiB
Python

"""
Synology Drive Admin Console API wrapper.
This module provides a Python interface for managing Synology Drive Admin Console,
including status, configuration, connections, logs, shares, and settings.
"""
from __future__ import annotations
from typing import Optional
from . import base_api
class AdminConsole(base_api.BaseApi):
"""
Synology Drive Admin Console API implementation.
This class provides methods to retrieve and manage Synology Drive Admin Console status,
configuration, connections, logs, shares, and settings.
"""
def status_info(self) -> dict[str, object] | str:
"""
Get Synology Drive status information.
Returns
-------
dict[str, object] or str
Status information.
"""
api_name = 'SYNO.SynologyDrive'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'get_status'}
return self.request_data(api_name, api_path, req_param)
def config_info(self) -> dict[str, object] | str:
"""
Get Synology Drive configuration information.
Returns
-------
dict[str, object] or str
Configuration information.
"""
api_name = 'SYNO.SynologyDrive.Config'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'get'}
return self.request_data(api_name, api_path, req_param)
def connections(self) -> dict[str, object] | str:
"""
Get summary of Synology Drive connections.
Returns
-------
dict[str, object] or str
Connections summary.
"""
api_name = 'SYNO.SynologyDrive.Connection'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'summary'}
return self.request_data(api_name, api_path, req_param)
def drive_check_user(self) -> dict[str, object] | str:
"""
Check user status in Synology Drive.
Returns
-------
dict[str, object] or str
User check result.
"""
api_name = 'SYNO.SynologyDrive'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'check_user'}
return self.request_data(api_name, api_path, req_param)
def active_connections(self) -> dict[str, object] | str:
"""
Get list of active Synology Drive connections.
Returns
-------
dict[str, object] or str
List of active connections.
"""
api_name = 'SYNO.SynologyDrive.Connection'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'list'}
return self.request_data(api_name, api_path, req_param)
def active_sync_connections(self) -> dict[str, object] | str:
"""
Get list of active Synology Drive ShareSync connections.
Returns
-------
dict[str, object] or str
List of active ShareSync connections.
"""
api_name = 'SYNO.SynologyDriveShareSync.Connection'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'list'}
return self.request_data(api_name, api_path, req_param)
def share_active_list(self) -> dict[str, object] | str:
"""
Get list of active shares in Synology Drive.
Returns
-------
dict[str, object] or str
List of active shares.
"""
api_name = 'SYNO.SynologyDrive.Share'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'list_active'}
return self.request_data(api_name, api_path, req_param)
def log(
self,
share_type: str = 'all',
get_all: bool = False,
limit: int = 1000,
keyword: str = '',
date_from: int = 0,
date_to: int = 0,
username: str = '',
target: str = 'user'
) -> dict[str, object] | str:
"""
Get Synology Drive logs.
Parameters
----------
share_type : str, optional
Type of share to filter logs (default is 'all').
get_all : bool, optional
Whether to get all logs (default is False).
limit : int, optional
Maximum number of logs to return (default is 1000).
keyword : str, optional
Keyword to filter logs (default is '').
date_from : int, optional
Start date in epoch format (default is 0).
date_to : int, optional
End date in epoch format (default is 0).
username : str, optional
Username to filter logs (default is '').
target : str, optional
Target type to filter logs (default is 'user').
Returns
-------
dict[str, object] or str
Log information.
"""
api_name = 'SYNO.SynologyDrive.Log'
info = self.gen_list[api_name]
api_path = info['path']
if get_all:
get_all = 'true'
elif not get_all:
get_all = 'false'
else:
return 'get_all must be True or False'
req_param = {'version': info['maxVersion'], 'method': 'list', 'share_type': share_type, 'get_all': get_all,
'limit': limit, 'keyword': keyword, 'datefrom': date_from, 'dateto': date_to, 'username': username,
'target': target}
return self.request_data(api_name, api_path, req_param)
def c2fs_share(self) -> dict[str, object] | str:
"""
Get list of C2FS shares.
Returns
-------
dict[str, object] or str
List of C2FS shares.
"""
api_name = 'SYNO.C2FS.Share'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'list'}
return self.request_data(api_name, api_path, req_param)
def settings(self) -> dict[str, object] | str:
"""
Get Synology Drive settings.
Returns
-------
dict[str, object] or str
Settings information.
"""
api_name = 'SYNO.SynologyDrive.Settings'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'list'}
return self.request_data(api_name, api_path, req_param)
def db_usage(self) -> dict[str, object] | str:
"""
Get Synology Drive database usage.
Returns
-------
dict[str, object] or str
Database usage information.
"""
api_name = 'SYNO.SynologyDrive.DBUsage'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'get'}
return self.request_data(api_name, api_path, req_param)
def delete_status(self) -> dict[str, object] | str:
"""
Get status of deleted nodes in Synology Drive.
Returns
-------
dict[str, object] or str
Delete status information.
"""
api_name = 'SYNO.SynologyDrive.Node.Delete'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'status'}
return self.request_data(api_name, api_path, req_param)
def file_property_transfer_status(self) -> dict[str, object] | str:
"""
Get file property transfer status for User Home migration.
Returns
-------
dict[str, object] or str
File property transfer status.
"""
api_name = 'SYNO.SynologyDrive.Migration.UserHome'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'status'}
return self.request_data(api_name, api_path, req_param)
def user_sync_profile(self, user: str = '', start: int = 0, limit: str | int = 'null') -> dict[str, object] | str:
"""
Get user sync profile(s).
Parameters
----------
user : str, optional
Username to filter profiles (default is '').
start : int, optional
Start index for pagination (default is 0).
limit : str or int, optional
Maximum number of profiles to return (default is 'null').
Returns
-------
dict[str, object] or str
User sync profile information.
"""
api_name = 'SYNO.SynologyDrive.Profiles'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'list',
'start': start, 'limit': limit, 'user': user}
return self.request_data(api_name, api_path, req_param)
def index_pause(self, time_pause: int = 60) -> dict[str, object] | str:
"""
Pause native client index for a specified duration.
Parameters
----------
time_pause : int, optional
Pause duration in seconds (default is 60).
Returns
-------
dict[str, object] or str
API response.
"""
api_name = 'SYNO.SynologyDrive.Index'
info = self.gen_list[api_name]
api_path = info['path']
req_param = {'version': info['maxVersion'], 'method': 'set_native_client_index_pause',
'pause_duration': time_pause}
return self.request_data(api_name, api_path, req_param)