mikespub/synology

Synology API interface

v1.8.0 2025-04-20 13:03 UTC

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).

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 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.