mikespub / synology
Synology API interface
Requires
- php: >=8.2
- symfony/http-client: ^6.4||^7.2
Requires (Dev)
- justinrainbow/json-schema: ^6.4
- phpunit/phpunit: ^11.5
- vlucas/phpdotenv: ^5.6
README
This is an update of https://github.com/zzarbi/synology
with new code standards and namespaces.
You will find some additional Tools here as well, including a Synology Web API Explorer using a basic REST API interface and generated OpenAPI files.
This is a PHP Library that consume Synology APIs
-
SYNO.Api :
- connect
- disconnect
- getAvailableApi
-
SYNO.SynologyDriveServer :
- connect
- disconnect
- getConnection
- getShare
- getLog
-
SYNO.CloudStationServer :
- connect
- disconnect
- getConnection
- getLog
-
SYNO.DownloadStation :
- connect
- disconnect
- getInfo
- getConfig
- setConfig
- getScheduleConfig
- setScheduleConfig
- getTaskList
- getTaskInfo
- addTask
- deleteTask
- pauseTask
- resumeTask
- getStatistics
- getRssList
- refreshRss
- getRssFeedList
-
SYNO.AudioStation:
- connect
- disconnect
- getInfo
- getObjects
- getObjectInfo
- getObjectCover
- searchSong
-
SYNO.FileStation:
- connect
- disconnect
- getInfo
- getShares
- getObjectInfo
- getList
- search
- download
- createFolder
-
SYNO.VideoStation:
- connect
- disconnect
- getInfo
- getObjects
- searchObject
- listObjects
-
SYNO.SurveillanceStation:
- connect
- disconnect
- getInfo
- getCameraList
- getHomeModeInfo
- switchHomeMode
Usage for Synology Api:
$synology = new Synology\Api('192.168.10.5', 5000, 'http', 1); //$synology->activateDebug(); $synology->connect('admin', 'xxxx'); print_r($synology->getAvailableApi());
Usage for AudioStation:
$synology = new Synology\Applications\AudioStation('192.168.10.5', 5000, 'http', 1); $synology->connect('admin', 'xxxx'); print_r($synology->getInfo());
Usage for GenericClient:
use Synology\Applications\ClientFactory; $synology = ClientFactory::getGeneric($service, '192.168.10.5', 5001, 'https'); $synology->connect('admin', '****'); // use generic client to call any api method $result = $synology->call($api, $path, $method, $params, $version);
Synology Web API Explorer
OpenAPI files by service
The OpenAPI files below use a path with the api, version, method + session id parameters for each API method, that is mapped to the Synology API by a basic REST API script. Any special additional parameters needed for a particular API method are not taken into account here (except for login).
- ACEEditor - explore
- AME - explore
- API - explore
- ActiveInsight - explore
- AudioPlayer - explore
- AudioStation - explore
- Auth - explore
- Aviary - explore
- Backup - explore
- C2FS - explore
- Cal - explore
- CloudStation - explore
- CloudSync - explore
- Contacts - explore
- Core - explore
- DR - explore
- DSM - explore
- DTV - explore
- Default - explore
- DisasterRecovery - explore
- Docker - explore
- DownloadStation - explore
- DownloadStation2 - explore
- Entry - explore
- FileStation - explore
- Finder - explore
- FolderSharing - explore
- Foto - explore
- FotoTeam - explore
- License - explore
- Lunbackup - explore
- MariaDB10 - explore
- MediaServer - explore
- Network - explore
- NoteStation - explore
- OAUTH - explore
- Office - explore
- Package - explore
- PersonMailAccount - explore
- Personal - explore
- PhotoStation - explore
- Remote - explore
- ResourceMonitor - explore
- S2S - explore
- SAS - explore
- SDS - explore
- SVSEXT - explore
- SecureSignIn - explore
- SecurityAdvisor - explore
- ShareLink - explore
- Snap - explore
- SocialAccount - explore
- Storage - explore
- SupportService - explore
- SurveillanceStation - explore
- SynologyDrive - explore
- SynologyDriveShareSync - explore
- TextEditor - explore
- USBCopy - explore
- Utils - explore
- VideoController - explore
- VideoPlayer - explore
- VideoStataion - explore
- VideoStation - explore
- VideoStation2 - explore
- WebRTC - explore
- WebStation - explore
OpenAPI files combined
The OpenAPI files below combine all APIs above into a single file. There are two versions of the OpenAPI file available, one using short urls with query parameters, and the other specifying the complete path including the 4 standard parameters for each API method. Any special additional parameters needed for a particular API method are not taken into account here (except for login).
OpenAPI files for Synology Office Suite WebAPI
The OpenAPI files below are part of the Synology Office Suite WebAPI. They are documented in more detail at https://office-suite-api.synology.com/ (account required)
- Synology Calendar - explore
- Synology Drive - explore
- Synology MailPlus - explore
- Synology Spreadsheet - explore
Synology REST API Gateway
The rest.php script acts as a basic REST API gateway for exploring the OpenAPI files. It must be copied in the base directory of your Web Station along with the combined.json
, required.json
and rest_mapping.php
files if you want to use it.
For most of the services, only the list
or getinfo
methods will actually work without additional parameters...
Generated OpenAPI Files and JSON Schemas
See OpenAPI Files and JSON Schemas for supported API methods.
Generated Synology\Services Classes
Usage for service classes:
use Synology\Applications\ClientFactory; $services = ClientFactory::getServices('192.168.10.5', 5001, 'https'); $services->connect('admin', '****'); // ...
See generated Synology\Services classes.