Syno
Simple Node.js wrapper (browser included) and CLI for Synology DSM REST API 5.x and 6.x.

See Synology Development Tool.
Installation
Just install the module using npm.
$ npm install syno
If you want to save it as a dependency, just add the --save
option.
$ npm install syno --save
If you want to install with the CLI executable, just add the --global
option.
$ npm install syno --global
Syno API
This is a simple presentation of the syno API and its methods.
To get more information (parameters, response data, ...) refer to the Synology Developer Tool page.
- DSM API
- File Station API
- Download Station API
- Audio Station API
- Video Station API
- Video Station DTV API
- Surveillance Station API
Javascript wrapper
var Syno = require('syno');
var syno = new Syno({
protocol: 'https',
host: 'localhost',
port: '5001',
account: 'my_username',
passwd: 'my_password',
apiVersion: '6.0.2'
});
This is how to use an API on the syno
object
syno.api.method(params, callback);
All arguments are optional by default :
params
: object hash with request parameters
callback
: function called with 2 arguments (error
, data
)
The data
arguments passed to the callback is an object hash, holding the response data. (see API documents)
Both the params
and callback
are optional, so you can call any method these ways :
syno.api.method(params, callback);
syno.api.method(params);
syno.api.method(callback);
syno.api.method();
N.B : If the params
parameter is not passed, but the method expects required parameters, an Error
will be
thrown.
Examples
syno.dsm.getInfo(callback);
syno.fs.getInfo(callback);
syno.fs.list({'folder_path':'/path/to/folder'}, callback);
syno.dl.listFiles({'limit':5, 'offset':10}, callback);
syno.dl.createTask({'uri':'https://link'}, callback);
syno.as.searchSong({'title':'my_title_song'}, callback);
syno.vs.listMovies({'limit':5}, callback);
syno.dtv.listChannels({'limit':5}, callback);
syno.ss.getInfoCamera({'cameraIds':4}, callback);
CLI
$ syno --help
Usage: syno [options]
Synology Rest API Command Line
Options:
-h, --help output usage information
-V, --version output the version number
-c, --config <path> DSM Configuration file. Default to ~/.syno/config.yaml
-u, --url <url> DSM URL. Default to https://admin:password@localhost:5001
-d, --debug Enabling Debugging Output
-a, --api <version> DSM API Version. Default to 6.0.2
-i, --ignore-certificate-errors Ignore certificate errors
Commands:
diskstationmanager|dsm [options] <method> DSM API
filestation|fs [options] <method> DSM File Station API
downloadstation|dl [options] <method> DSM Download Station API
audiostation|as [options] <method> DSM Audio Station API
videostation|vs [options] <method> DSM Video Station API
videostationdtv|dtv [options] <method> DSM Video Station DTV API
surveillancestation|ss [options] <method> DSM Surveillance Station API
Examples:
$ syno diskstationmanager|dsm getInfo
$ syno filestation|fs getInfo
$ syno downloadstation|dl getInfo
$ syno audiostation|as getInfo
$ syno videostation|vs getInfo
$ syno videostationdtv|dtv listChannels --payload '{"limit":5}' --pretty
$ syno surveillancestation|ss getInfo
Examples
$ syno dsm getInfo --pretty
$ syno fs getInfo --pretty
$ syno fs listFiles --payload '{"folder_path":"/path/to/folder"}' --pretty
$ syno dl listTasks --payload '{"limit":5, "offset":10}' --pretty
$ syno dl createTask --payload '{"uri":"https://link"}'
$ syno as searchSong --payload '{"title":"my_title_song"}' --pretty
$ syno vs listMovies --payload '{"limit":5}' --pretty
$ syno dtv listChannels --payload '{"limit":5}' --pretty
$ syno ss getInfoCamera --payload '{"cameraIds":4}' --pretty
CLI Authentication
Via environment variables
export SYNO_ACCOUNT=user
export SYNO_PASSWORD=password
export SYNO_PROTOCOL=https
export SYNO_HOST=localhost
export SYNO_PORT=5001
Without a configuration file
$ syno fs getInfo --url https://user:password@localhost:5001 --pretty
With a configuration file
url:
protocol: https
host: localhost
port: 5001
account: admin
passwd: password
$ syno fs getInfo --pretty
More usage examples in the wiki.
Browser
Note
Be sure to disable same-origin policy in your browser.
Example
<html>
<head>
<script src="syno-6.x.min.js"></script>
<script type="text/javascript">
var Syno = require('syno.Syno');
var syno = new Syno({
protocol: 'https',
host: 'localhost',
port: '5001',
account: 'my_username',
passwd: 'my_password'
});
syno.fs.getInfo(function(error, data) {
console.log(data)
});
</script>
</head>
<html>
Demo
A demo is available online or in the test/browser
folder.
Migrating from 1.0.x to 2.x
Breaking changes
- Some method names might have change. For example (
getFileStationInfo
to getInfo
)
- Optional and required parameters are not checked before sending the request anymore.
Tips & Tricks
If you meet this error when using an https
connection:
[ERROR] : Error: UNABLE_TO_VERIFY_LEAF_SIGNATURE
You will need to tell request
to ignore certificate errors:
CLI:
syno as getInfo --ignore-certificate-errors
or
export SYNO_IGNORE_CERTIFICATE_ERRORS=0
Code:
var syno = new Syno({
ignoreCertificateErrors: false
});
History
View the changelog
Authors
License
Copyright (c) 2016 Quentin Rousseau <contact@quent.in>
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
2.2.0
- Update libs
- Update dependencies
- Handling exception when a command is not found
Packages version compiled for 5.x
| API | Package version |
|:----|:----------------|
| DSM | 5967 |
| File Station | 5967 |
| Download Station | 3.5-2988 |
| Audio Station | 5.4-2860 |
| Video Station | 1.6-0859 |
| Video Station DTV | 1.6-0859 |
| Surveillance Station | 7.1-4155 |
Packages version compiled for 6.x
| API | Package version |
|:----|:----------------|
| DSM | 24922 |
| File Station | 24922 |
| Download Station | 3.8.12-3518 |
| Audio Station | 6.5.3-3363 |
| Video Station | 2.4.6-1594 |
| Video Station DTV | 2.4.6-1594 |
| Surveillance Station | 8.2.6-6009 |