mirror of
https://github.com/N4S4/synology-api.git
synced 2025-07-24 10:00:37 +00:00
315 lines
9.7 KiB
Python
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)
|