Terrano Posté(e) le 27 février 2015 Partager Posté(e) le 27 février 2015 (modifié) J'ai vu très peu de sujet sur ce forum concernant l'utilisation des web api de nos chers NAS. Synology propose, comme par exemple pour Surveillance Station, des documents : https://global.download.synology.com/download/Document/DeveloperGuide/Surveillance_Station_Web_API.pdf On peut alors très facilement contrôler toutes les fonctions natives du NAS. Je vais vous expliquer comment trouver toutes ces fonctions et comment les utiliser. Tout d'abord, la documentation n'étant pas à jour avec Surveillance Station 7, comment trouver les informations sur ces API à jour ? Lister les API Synology : Ce script va vous aider à lister les API existantes, et elles sont très nombreuses : <?php $server = "https://dsm.solar-crisis.fr"; $json = file_get_contents($server.'/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.'); header('Content-Type: application/json'); echo $json; ?> Le résultat est assez conséquent !!! De quoi trouver son bonheur. { "data": { "SYNO.ACEEditor": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.ACEEditor.Preference": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.API.Auth": { "maxVersion": 3, "minVersion": 1, "path": "auth.cgi" }, "SYNO.API.Encryption": { "maxVersion": 1, "minVersion": 1, "path": "encryption.cgi" }, "SYNO.API.Info": { "maxVersion": 1, "minVersion": 1, "path": "query.cgi" }, "SYNO.AudioPlayer.Stream": { "maxVersion": 1, "minVersion": 1, "path": "AudioPlayer/stream.cgi" }, "SYNO.AudioStation.Album": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/album.cgi" }, "SYNO.AudioStation.Artist": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/artist.cgi" }, "SYNO.AudioStation.Composer": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/composer.cgi" }, "SYNO.AudioStation.Cover": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/cover.cgi" }, "SYNO.AudioStation.Download": { "maxVersion": 1, "minVersion": 1, "path": "AudioStation/download.cgi" }, "SYNO.AudioStation.Folder": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/folder.cgi" }, "SYNO.AudioStation.Genre": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/genre.cgi" }, "SYNO.AudioStation.Info": { "maxVersion": 3, "minVersion": 1, "path": "AudioStation/info.cgi" }, "SYNO.AudioStation.Lyrics": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/lyrics.cgi" }, "SYNO.AudioStation.LyricsSearch": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/lyrics_search.cgi" }, "SYNO.AudioStation.MediaServer": { "maxVersion": 1, "minVersion": 1, "path": "AudioStation/media_server.cgi" }, "SYNO.AudioStation.Playlist": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/playlist.cgi" }, "SYNO.AudioStation.Proxy": { "maxVersion": 1, "minVersion": 1, "path": "AudioStation/proxy.cgi" }, "SYNO.AudioStation.Radio": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/radio.cgi" }, "SYNO.AudioStation.RemotePlayer": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/remote_player.cgi" }, "SYNO.AudioStation.RemotePlayerStatus": { "maxVersion": 1, "minVersion": 1, "path": "AudioStation/remote_player_status.cgi" }, "SYNO.AudioStation.Search": { "maxVersion": 1, "minVersion": 1, "path": "AudioStation/search.cgi" }, "SYNO.AudioStation.Song": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/song.cgi" }, "SYNO.AudioStation.Stream": { "maxVersion": 2, "minVersion": 1, "path": "AudioStation/stream.cgi" }, "SYNO.AudioStation.WebPlayer": { "maxVersion": 1, "minVersion": 1, "path": "AudioStation/web_player.cgi" }, "SYNO.Backup.App": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.App.Backup": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.App.Restore": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Config.Backup": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Config.Restore": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Log": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Repository": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Repository.PrivilegedUser": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Restore": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Server": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Service.NetworkBackup": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Service.TimeBackup": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Service.VersionBackup": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Share.Restore": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Source.Folder": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Storage.Connect.Network": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Storage.S3.Bucket": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Storage.S3.Region": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Storage.Share.Local": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Storage.Volume.Local": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Target": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Target.Folder": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Target.Owner": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Target.PrivilegedUser": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Task": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Task.Data": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Backup.Version": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ACL": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.AppPortal": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.AppPortal.Config": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.AppPriv": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.AppPriv.App": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.AppPriv.Rule": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.BandwidthControl": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.BandwidthControl.Protocol": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.BandwidthControl.Status": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CMS": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CMS.Cache": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CMS.Info": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CMS.Policy": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CMS.ServerInfo": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CMS.Token": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Certificate": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Certificate.CRT": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Certificate.CSR": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.CurrentConnection": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.DDNS.ExtIP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.DDNS.Provider": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.DDNS.Record": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.DDNS.Synology": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.DataCollect": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.DataCollect.Application": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Desktop.Timeout": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Directory.Domain": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Directory.Domain.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Directory.Domain.Schedule": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Directory.LDAP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Directory.LDAP.BaseDN": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Directory.LDAP.Profile": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Bluetooth": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Bluetooth.Device": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Bluetooth.Settings": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.DefaultPermission": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer.BonjourSharing": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer.Driver": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer.Network": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer.Network.Host": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer.OAuth": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Printer.USB": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Storage.EUnit": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Storage.SD": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Storage.Setting": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Storage.USB": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.Storage.eSATA": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.ExternalDevice.UPS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.EzInternet": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.File": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.File.Thumbnail": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.AFP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.FTP": { "maxVersion": 3, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.FTP.ChrootUser": { "maxVersion": 2, "minVersion": 2, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.FTP.SFTP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.FTP.Security": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.NFS": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.NFS.AdvancedSetting": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.NFS.IDMap": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.NFS.Kerberos": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.NFS.SharePrivilege": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.SMB": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.WebDAV": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.WebDAV.CalDAV": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.FileServ.WebDAV.CalDAV.Calendar": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Group": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Group.Member": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.BeepControl": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.DCOutput": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.DCOutput.Task": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.FanSpeed": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.Hibernation": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.LCM": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.PowerRecovery": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.PowerSchedule": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Hardware.ZRAM": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MediaIndexing": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MediaIndexing.IndexFolder": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MediaIndexing.MediaConverter": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MyDSCenter": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MyDSCenter.Account": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MyDSCenter.Purchase": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.MyDSCenter.Unify": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Bond": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Bridge": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.DHCPServer": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.DHCPServer.ClientList": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.DHCPServer.PXE": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.DHCPServer.Reservation": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.DHCPServer.WPAD": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Ethernet": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.IPv6": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.IPv6.Router": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.IPv6.Router.Prefix": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.IPv6Tunnel": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Interface": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.LocalBridge": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.MACClone": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.PPPoE": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.PPPoE.Relay": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Proxy": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.ConnectionList": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.DMZ": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.Gateway.List": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.LocalLan": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.MacFilter": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.ParentalControl": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.PkgList": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.PortForward": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.Static.Route": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Router.Topology": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.TrafficControl.RouterRules": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.TrafficControl.Rules": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.UPnPServer": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.USBModem": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.VPN": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.VPN.L2TP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.VPN.OpenVPN": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.VPN.OpenVPN.CA": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.VPN.PPTP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Wifi.Client": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Wifi.Hotspot": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Network.Wifi.WPS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Advance.CustomizedData": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Advance.FilterSettings": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Advance.Variables": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Advance.WarningPercentage": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.CMS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.CMS.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Mail": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Mail.Auth": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Mail.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Push": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Push.AuthToken": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Push.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Push.Mail": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.Push.Mobile": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.SMS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.SMS.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Notification.SMS.Provider": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.OTP": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.OTP.EnforcePolicy": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Package": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Package.Control": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Package.Installation": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Package.Server": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Package.Setting": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Package.Uninstallation": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.PortForwarding": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.PortForwarding.Compatibility": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.PortForwarding.RouterConf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.PortForwarding.RouterList": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.PortForwarding.Rules": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.PortForwarding.Rules.Serv": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.QuickConnect": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.QuickConnect.Permission": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Quota": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.RecycleBin": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.RecycleBin.User": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Region.Language": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Region.NTP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Region.NTP.Server": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Report": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Report.Analyzer": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Report.Config": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Report.History": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SNMP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.AutoBlock": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.AutoBlock.Rules": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.DSM": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.DSM.Embed": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.DoS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.Firewall.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.Firewall.Rules": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.Firewall.Rules.Serv": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.VPNPassthrough": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Security.VPNPassthrough.Status": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SecurityScan.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SecurityScan.Operation": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SecurityScan.Status": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Service": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Service.Conf": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Service.PortInfo": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Crypto": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Crypto.Key": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.CryptoFile": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Fileindex": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Migration": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Migration.Task": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Permission": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Share.Snapshot": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Storage.Disk": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Storage.Pool": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Storage.Volume": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SupportForm.Account": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SupportForm.Form": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SupportForm.Log": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SupportForm.Service": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.CA": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.CustRule": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.FileTransfer": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.History": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.Log": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.Setting.Notify": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.Setting.Server": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.Setting.Storage": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.SyslogClient.Status": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.System": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.System.Utilization": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.TFTP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.TaskScheduler": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Terminal": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Theme.Image": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Theme.Login": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.AutoUpgrade": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.Group": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.Group.Download": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.GroupInstall": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.GroupInstall.Network": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.Patch": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.Server": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.Server.Download": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Upgrade.Setting": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.User": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.User.Home": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.User.PasswordPolicy": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.DSM": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.DSM.External": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.HTTP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.HTTP.Dependency": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.HTTP.VHost": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.PHP": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Core.Web.PHP.Extension": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.DSM.Application": { "maxVersion": 1, "minVersion": 1, "path": "dsm/app.cgi" }, "SYNO.DSM.AutoBlock": { "maxVersion": 1, "minVersion": 1, "path": "dsm/autoblock.cgi" }, "SYNO.DSM.Connection": { "maxVersion": 1, "minVersion": 1, "path": "dsm/connection.cgi" }, "SYNO.DSM.FindMe": { "maxVersion": 1, "minVersion": 1, "path": "dsm/findme.cgi" }, "SYNO.DSM.Group": { "maxVersion": 1, "minVersion": 1, "path": "dsm/group.cgi" }, "SYNO.DSM.Info": { "maxVersion": 1, "minVersion": 1, "path": "dsm/info.cgi" }, "SYNO.DSM.LogViewer": { "maxVersion": 1, "minVersion": 1, "path": "dsm/logviewer.cgi" }, "SYNO.DSM.Network": { "maxVersion": 1, "minVersion": 1, "path": "dsm/network.cgi" }, "SYNO.DSM.Package": { "maxVersion": 1, "minVersion": 1, "path": "dsm/package.cgi" }, "SYNO.DSM.PushNotification": { "maxVersion": 1, "minVersion": 1, "path": "dsm/notification.cgi" }, "SYNO.DSM.Service": { "maxVersion": 1, "minVersion": 1, "path": "dsm/service.cgi" }, "SYNO.DSM.System": { "maxVersion": 1, "minVersion": 1, "path": "dsm/system.cgi" }, "SYNO.DSM.SystemLoading": { "maxVersion": 1, "minVersion": 1, "path": "dsm/system_loading.cgi" }, "SYNO.DSM.User": { "maxVersion": 1, "minVersion": 1, "path": "dsm/user.cgi" }, "SYNO.DSM.Volume": { "maxVersion": 1, "minVersion": 1, "path": "dsm/volume.cgi" }, "SYNO.DSM.iSCSI": { "maxVersion": 1, "minVersion": 1, "path": "dsm/iscsi.cgi" }, "SYNO.DTV.Channel": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/channellist.cgi" }, "SYNO.DTV.ChannelScan": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/channelscan.cgi" }, "SYNO.DTV.Controller": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/dtvcontrol.cgi" }, "SYNO.DTV.DVBSScan": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/dvbsscan.cgi" }, "SYNO.DTV.Program": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/programlist.cgi" }, "SYNO.DTV.Schedule": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/schedule_recording.cgi" }, "SYNO.DTV.Statistic": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/dtvstatistic.cgi" }, "SYNO.DTV.Status": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/dvtstatus.cgi" }, "SYNO.DTV.Streaming": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/dtvstreaming.cgi" }, "SYNO.DTV.Tuner": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/tuner.cgi" }, "SYNO.DownloadStation.BTSearch": { "maxVersion": 1, "minVersion": 1, "path": "DownloadStation/btsearch.cgi" }, "SYNO.DownloadStation.Info": { "maxVersion": 2, "minVersion": 1, "path": "DownloadStation/info.cgi" }, "SYNO.DownloadStation.RSS.Feed": { "maxVersion": 1, "minVersion": 1, "path": "DownloadStation/RSSfeed.cgi" }, "SYNO.DownloadStation.RSS.Site": { "maxVersion": 1, "minVersion": 1, "path": "DownloadStation/RSSsite.cgi" }, "SYNO.DownloadStation.Schedule": { "maxVersion": 1, "minVersion": 1, "path": "DownloadStation/schedule.cgi" }, "SYNO.DownloadStation.Statistic": { "maxVersion": 1, "minVersion": 1, "path": "DownloadStation/statistic.cgi" }, "SYNO.DownloadStation.Task": { "maxVersion": 3, "minVersion": 1, "path": "DownloadStation/task.cgi" }, "SYNO.DownloadStation.Xunlei.Task": { "maxVersion": 1, "minVersion": 1, "path": "DownloadStation/xunlei/dl_queue.cgi" }, "SYNO.Entry.Request": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Entry.Request.Polling": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.FileStation.BackgroundTask": { "maxVersion": 2, "minVersion": 1, "path": "FileStation/background_task.cgi" }, "SYNO.FileStation.CheckExist": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_checkDir.cgi" }, "SYNO.FileStation.CheckPermission": { "maxVersion": 2, "minVersion": 1, "path": "FileStation/file_permission.cgi" }, "SYNO.FileStation.Compress": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_compress.cgi" }, "SYNO.FileStation.CopyMove": { "maxVersion": 2, "minVersion": 1, "path": "FileStation/file_MVCP.cgi" }, "SYNO.FileStation.CreateFolder": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_crtfdr.cgi" }, "SYNO.FileStation.Delete": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_delete.cgi" }, "SYNO.FileStation.DirSize": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_dirSize.cgi" }, "SYNO.FileStation.Download": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_download.cgi" }, "SYNO.FileStation.Extract": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_extract.cgi" }, "SYNO.FileStation.Favorite": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_favorite.cgi" }, "SYNO.FileStation.Info": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/info.cgi" }, "SYNO.FileStation.List": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_share.cgi" }, "SYNO.FileStation.MD5": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_md5.cgi" }, "SYNO.FileStation.OpenGoogleDrive": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_opengdrive.cgi" }, "SYNO.FileStation.Rename": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_rename.cgi" }, "SYNO.FileStation.Search": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_find.cgi" }, "SYNO.FileStation.Sharing": { "maxVersion": 2, "minVersion": 1, "path": "FileStation/file_sharing.cgi" }, "SYNO.FileStation.Snapshot": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_snapshot.cgi" }, "SYNO.FileStation.Thumb": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_thumb.cgi" }, "SYNO.FileStation.Upload": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/api_upload.cgi" }, "SYNO.FileStation.VFS.Connection": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.FileStation.VFS.Profile": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.FileStation.VFS.Protocol": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.FileStation.VFS.User": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.FileStation.VirtualFolder": { "maxVersion": 1, "minVersion": 1, "path": "FileStation/file_virtual.cgi" }, "SYNO.FolderSharing.Download": { "maxVersion": 1, "minVersion": 1, "path": "FolderSharing/file_download.cgi" }, "SYNO.FolderSharing.List": { "maxVersion": 1, "minVersion": 1, "path": "FolderSharing/file_share.cgi" }, "SYNO.FolderSharing.Thumb": { "maxVersion": 1, "minVersion": 1, "path": "FolderSharing/file_thumb.cgi" }, "SYNO.NoteStation.FTS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Import.Evernote": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Info": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Note": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Note.AppLink": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Note.Encrypt": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Note.Polling": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Note.Version": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Notebook": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Permission": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Permission.Public": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Permission.User": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Setting": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Shard": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Shard.Link": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Share.Priv": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Shortcut": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.NoteStation.Tag": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.Package": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.PersonMailAccount": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.PersonMailAccount.Contacts": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.PersonMailAccount.Mail": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.ResourceMonitor.Setting": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.S2S.Client": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.S2S.Client.Job": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.S2S.Server": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.S2S.Server.Pair": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SocialAccount": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SocialAccount.Friend": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SocialAccount.Message": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SocialAccount.Token": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.ActionRule": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.AddOns": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Analytics": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Analytics.Setting": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.AudioOut": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.AudioPattern": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.AudioStream": { "maxVersion": 2, "minVersion": 1, "path": "SurveillanceStation/audioStreaming.cgi" }, "SYNO.SurveillanceStation.AxisAcsCtrler": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.AxisAcsCtrler.Search": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.CMS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.CMS.GetDsStatus": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.CMS.SlavedsWizard": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Camera": { "maxVersion": 8, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Camera.Event": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Camera.Group": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Camera.Import": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Camera.Wizard": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Device": { "maxVersion": 2, "minVersion": 1, "path": "SurveillanceStation/device.cgi" }, "SYNO.SurveillanceStation.DigitalOutput": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Emap": { "maxVersion": 1, "minVersion": 1, "path": "SurveillanceStation/emap.cgi" }, "SYNO.SurveillanceStation.Event": { "maxVersion": 4, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Event.Export": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Event.Mount": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.ExternalEvent": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.ExternalRecording": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Info": { "maxVersion": 5, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.License": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Log": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification": { "maxVersion": 2, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification.Email": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification.Filter": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification.PushService": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification.SMS": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification.SMS.ServiceProvider": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Notification.Schedule": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.PTZ": { "maxVersion": 3, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.PersonalSettings.Image": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Share": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.SnapShot": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Stream": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.Streaming": { "maxVersion": 2, "minVersion": 1, "path": "SurveillanceStation/streaming.cgi" }, "SYNO.SurveillanceStation.TaskQueue": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.VideoStream": { "maxVersion": 1, "minVersion": 1, "path": "SurveillanceStation/videoStreaming.cgi" }, "SYNO.SurveillanceStation.VisualStation": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.VisualStation.Layout": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.SurveillanceStation.VisualStation.Search": { "maxVersion": 1, "minVersion": 1, "path": "entry.cgi", "requestFormat": "JSON" }, "SYNO.VideoController.Device": { "maxVersion": 1, "minVersion": 1, "path": "VideoController/device.cgi" }, "SYNO.VideoController.Password": { "maxVersion": 1, "minVersion": 1, "path": "VideoController/password.cgi" }, "SYNO.VideoController.Playback": { "maxVersion": 2, "minVersion": 1, "path": "VideoController/playback.cgi" }, "SYNO.VideoController.Volume": { "maxVersion": 1, "minVersion": 1, "path": "VideoController/volume.cgi" }, "SYNO.VideoStataion.Poster": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/poster.cgi" }, "SYNO.VideoStation.AudioTrack": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/audiotrack.cgi" }, "SYNO.VideoStation.Collection": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/collection.cgi" }, "SYNO.VideoStation.Folder": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/folder.cgi" }, "SYNO.VideoStation.HomeVideo": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/homevideo.cgi" }, "SYNO.VideoStation.Info": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/info.cgi" }, "SYNO.VideoStation.Library": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/library.cgi" }, "SYNO.VideoStation.Metadata": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/metadata.cgi" }, "SYNO.VideoStation.Movie": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/movie.cgi" }, "SYNO.VideoStation.PluginSearch": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/pluginsearch.cgi" }, "SYNO.VideoStation.Poster": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/poster.cgi" }, "SYNO.VideoStation.Rating": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/rater.cgi" }, "SYNO.VideoStation.Sharing": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/sharing.cgi" }, "SYNO.VideoStation.Streaming": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/vtestreaming.cgi" }, "SYNO.VideoStation.Subtitle": { "maxVersion": 3, "minVersion": 1, "path": "VideoStation/subtitle.cgi" }, "SYNO.VideoStation.TVRecording": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/tvrecord.cgi" }, "SYNO.VideoStation.TVShow": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/tvshow.cgi" }, "SYNO.VideoStation.TVShowEpisode": { "maxVersion": 2, "minVersion": 1, "path": "VideoStation/tvshow_episode.cgi" }, "SYNO.VideoStation.Video": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/video.cgi" }, "SYNO.VideoStation.WatchStatus": { "maxVersion": 1, "minVersion": 1, "path": "VideoStation/watchstatus.cgi" } }, "success": true } Problème, on a les API, ok, on a les chemins, ok.... mais comment les utiliser ? Retrouver les paramères des API Pour se faire, pas d'autre choix que de se connecter en SSH. Par exemple, pour retrouver les paramètres de l'API SYNO.SurveillanceStation.Camera, faites ceci : cd /var/packages/SurveillanceStation/target/webapi vi Camera/conf/SYNO.SurveillanceStation.Camera.lib Vous aurez une ligne au format JSON. {"SYNO.SurveillanceStation.Camera": {"allowUser": ["admin.local", "admin.domain", "admin.ldap", "normal.local", "normal.domain", "normal.ldap"], "appPriv": "SYNO.SDS.SurveillanceStation", "authLevel": 2, "lib": "/var/packages/SurveillanceStation/target/webapi/Camera/src/SYNO.SurveillanceStation.Camera.so", "maxVersion": 8, "methods": {"1": [{"List": {"allowDemo": true}}, {"GetSnapshot": {"allowDemo": true}}, {"ListGroup": {"allowDemo": true}}, {"Listgroup": {"allowDemo": true}}, {"GetInfo": {"allowDemo": true}}, {"GetCapability": {"allowDemo": true}}], "2": [{"List": {"allowDemo": true}}, {"GetSnapshot": {"allowDemo": true}}, {"ListGroup": {"allowDemo": true}}, {"Listgroup": {"allowDemo": true}}, {"GetInfo": {"allowDemo": true}}, {"GetCapability": {"allowDemo": tr............. Nous voyons ici les méthodes autorisées par l'API et les différentes versions de celle-ci (8 en tout...). Avec ceci, et la documentation, il est alors possible d'interroger et d'interagir avec les packets Synology et le NAS. Exemple Voici un exemple tout bête : Afficher un snapshot et l'état des Caméras de surveillance Station. Tout le détail est dans le code ci-dessous : <?php //DSM Server Address with port $server = "https://www.mondomaine.fr:IPDSM"; //Authorized user login $login = "login"; //Authorized user password $pass = "pass"; /* API VERSIONS */ //SYNO.API.Auth $vAuth = 2; //SYNO.SurveillanceStation.Camera $vCamera = 2; //Get SYNO.API.Auth Path (recommended by Synology for further update) $json = file_get_contents($server.'/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth'); $obj = json_decode($json); $path = $obj->data->{'SYNO.API.Auth'}->path; //Login and creating SID $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.API.Auth&method=Login&version='.$vAuth.'&account='.$login.'&passwd='.$pass.'&session=SurveillanceStation&format=sid'); $obj = json_decode($json); if($obj->success != "true"){ echo "error"; exit(); }else{ //authentification successful $sid = $obj->data->sid; echo '<p>'.$sid.'</p>'; //Get SYNO.SurveillanceStation.Camera (recommended by Synology for further update) $json = file_get_contents($server.'/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.SurveillanceStation.Camera'); $obj = json_decode($json); $path = $obj->data->{'SYNO.SurveillanceStation.Camera'}->path; //list of known cams $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&version='.$vCamera.'&method=List&_sid='.$sid); $obj = json_decode($json); foreach($obj->data->cameras as $cam){ $id_cam = $cam->id; echo "<p>Cam " . $id_cam . " detected</p>"; //check if cam is connected if(!$cam->status) { //check if cam is activated and not recording if($cam->enabled && !$cam->recStatus) { //showing a snapshot of the camera echo "<img src='".$server."/webapi/".$path."?api=SYNO.SurveillanceStation.Camera&version=1&method=GetSnapshot&preview=true&camStm=1&cameraId=".$id_cam."&_sid=".$sid."' alt='limage toto' width='320' height='240'>"; } else{ echo "<p>Cam " . $id_cam . " skipped</p>"; } }else{ echo "<p>Cam " . $id_cam . " deconnected</p>"; } } } ?> Ne pas oublier de Kill la session après le chargement : //Get SYNO.API.Auth Path (recommended by Synology for further update) $json = file_get_contents($server.'/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth'); $obj = json_decode($json); $path = $obj->data->{'SYNO.API.Auth'}->path; //Logout and destroying SID $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.API.Auth&method=Logout&version='.$vAuth.'&session=SurveillanceStation&_sid='.$sid); $obj = json_decode($json); Et apres ? Après, vous pouvez étudier les API, et interagir avec votre NAS à l'aide de scripts pour intégrer sous forme de Plugin php des fonctionnalités directement dans votre outil de domotique. Les interactions peuvent être très larges, que ce soit du monitoring, de l'automatisation, des fonctionnalités... Personnellement, je vais essayer de faire mes propres plugins PHP. Y'a du boulot. Modifié le 27 février 2015 par Terrano 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Micka69 Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 Bonjour, Je suis très intéressé par tes scripts! Je viens d'essayer le tiens pour le snapshot ça fonctionne. Mais j'essaie de d'activer et désactiver les caméras mais sans succès... J'essaie avec cette url mais sans succès. GET /webapi/SurveillanceStation/camera.cgi? api=SYNO.SurveillanceStation.Camera&method=Enable&version=3&cameraIds=2,10 J'ai copier/coller ton script et inséré les lignes $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&method=Disable&version='.$vCamera.'&cameraIds='.$id_cam.'&_sid='.$sid); $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&method=Enable&version='.$vCamera.'&cameraIds='.$id_cam.'&_sid='.$sid); Mais rien ne se passe je ne vois rien changer sous SurveillanceStation. Pour information j'ai la dernière mise à jour et a priori les API auraient changé mais je ne trouve pas les dernières versions. Si tu as des astuces je suis preneur! Merci ! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 Le problème est sûrement le numéro de la caméra, maintenant faut voir le code erreur retourné par l'API pour en savoir + 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&method=Disable&version='.$vCamera.'&cameraIds='.$id_cam.'&_sid='.$sid); $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&method=Enable&version='.$vCamera.'&cameraIds='.$id_cam.'&_sid='.$sid); Essaie avec cameraId et pas cameraIds 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 la doc officielle http://ukdl.synology.com/download/Document/DeveloperGuide/Surveillance_Station_Web_API.pdf specifie ceci : Request Parameter Value Description Availability cameraIds <string> The list of <CAMERA_ID> to be queried concatenated by “,”. 3 and onward donc bien sur, ne suis pas la doc officielle enlève le S, suis mdr là sur ses fameux conseils 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 Franchement, le genre de commentaire completement inutile qui montre le peu de considérations que tu as des autres.... Faudrait commencer à lire mon post : Tout d'abord, la documentation n'étant pas à jour avec Surveillance Station 7, comment trouver les informations sur ces API à jour ? Ensuite, si mes réponses ne te conviennent pas, t'es pas obligé de répondre, où alors, je ne posterais plus rien pour aider les autres vu que ca à l'air de te géner... Vaut mieux essayer d'aider et de se tromper que de ne rien faire, chacun sa philosophie. 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 (modifié) 99% de la doc est à jour et j'ai donné le lien seul quelque api nouvelle n'y sont pas reférencée, ce qui n'est pas le cas l'api incriminée, activé une camera est possible depuis ... (le début probablement ) evidemment, + simple de lancé de fausse info que d'ouvrir un pdf pour vérifié pour certains bref : RTFM Modifié le 1 mars 2015 par Gaetan Cambier 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 La doc à jour ????????????? T'es au comble du ridicule.... Dans la doc, SYNO.SurveillanceStation.Camera fait référence à : GET /webapi/SurveillanceStation/camera.cgi? api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&version=1&cameraId=10 Or, en vrai avec SurveillanceStation 7.0, c'est : "SYNO.SurveillanceStation.Camera": {"maxVersion": 8,"minVersion": 1,"path": "entry.cgi","requestFormat": "JSON"}, Oh mais si pour toi c'est à jour..... Je m'incline, faudrait pas que j'offense Dieu... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 (modifié) l'url de l'api n'a aucune importance si tu avait lu les première page de la doc : URL path Surveillance Station Web API does not preserve a constant URL for every API. Instead, 3rd party applications need to use the command SYNO.API.Info to retrieve every API’s URL path. SYNO.API.Info is the only API with constant URL, and it does not need authorization, its path is /webapi/query.cgi c'était à la page 6 donc, si c'est programmé correctement, ca n'a aucune incidence, on etait prévenu de pas le coder en dur et pour en revenir au problème principal, car je suis là avant tout pour ca : le + simple et d'aller detecter les caméra pour connaitre leur id (chapitre 2.3.4.1 de la doc pour ceux qui n'aime pas lire ) Modifié le 1 mars 2015 par Gaetan Cambier 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 https://www.nomdomaine.fr:IPDSM/webapi/SurveillanceStation/camera.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=1&_sid=ZHxHYWGEPnvKU1450MAN000705 Me renvoie "Désolé, la page que vous recherchez est introuvable." https://www.nomdomaine.fr:IPDSM/webapi/entry.cgi?api=SYNO.SurveillanceStation.Camera&method=List&version=1&_sid=ZHxHYWGEPnvKU1450MAN000705 Me renvoit bien le JSON. T'es tétu..... Tu sais lire mais tu comprends rien et tu testes meme pas... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 non, c'est pour çà que mes script fonctionnent et sont meme passé de surveillance station 6.3 à 7.0 sans aucune modification 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 T'admettra même pas que la doc n'est pas a jour.... Tu vas détourner encore la conversation et même pas t'excuser... T'es pathétique. Et en plus tu modifies tes posts pour cacher ta bétise... Surtout que ce que tu dis, mon script php en tient compte. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 (modifié) Essaie avec cameraId et pas cameraIds Attention, les méthodes Enable et Disable ne sont arrivées qu'à partir de la version 3 de l'API. En ce qui concerne cameraIds et cameraId, effectivement les deux fonctionnent. Part contre, quand j'essaie la méthode Disable j'obtient un code erreur 117 dont je ne sais pas à quoi il correspond. Je continue à regarder. Edit : En fait, c'est simple, j'ai pas les droits avec mon compte d'activer ou désactiver car ce n'est pas un compte Admin d'où l'erreur 117. Modifié le 1 mars 2015 par Terrano 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 1 mars 2015 Partager Posté(e) le 1 mars 2015 ... En ce qui concerne cameraIds et cameraId, effectivement les deux fonctionnent. ... c'est entièrement FAUX seul "cameraIds" pour la methode enable et disable de l'api SYNO.SurveillanceStation.Camera est accepté utiliser un paramètres inexistant provoque la classique erreur 401 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Terrano Posté(e) le 1 mars 2015 Auteur Partager Posté(e) le 1 mars 2015 c'est entièrement FAUX seul "cameraIds" pour la methode enable et disable de l'api SYNO.SurveillanceStation.Camera est accepté utiliser un paramètres inexistant provoque la classique erreur 401 C'est pas entièrement faux, mais seulement faux pour Enable et Disable de cette API. J'attends tes excuses concernant la documentation pas à jour.... J'attends.... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Micka69 Posté(e) le 6 mars 2015 Partager Posté(e) le 6 mars 2015 Bonjour Messieurs, Merci pour vos retours. Malheureusement rien de concluant pour ma part... Avez-vous réussi à le tester chez vous? Terrano je crois que c'est toi qui avait fait le script en python ? Je l'avais testé aussi mais j'avais un problème de droit, je ne pouvais pas activer désactiver la caméra... En fait le but ultime est d'utiliser les url, c'est d'activer et désactiver la caméra en partant et en rentrant de chez moi ... Merci d'avance pour votre aide! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 6 mars 2015 Partager Posté(e) le 6 mars 2015 non, le script python pour activer desactive les cam, c moi, tu as un message d'erreur qd tu l'execute le script ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Micka69 Posté(e) le 9 mars 2015 Partager Posté(e) le 9 mars 2015 Bonsoir, Désolé pour les temps de réponses .... OK Gaetan excuses-moi. Bon du coup c'est bon ! Etant novice complet en php plus surement 2/3 de paires de moufles ça ne m'a pas aidé! Mais là c'est tout bon ça fonctionne nickel ! J'ai rien inventé ... Merci Terrano pour ton script php ! Et merci Gaetan pour ton aide ! Je mets mon petit bout de code, j'ai juste modifié la boucle foreach de ton code et j'active et désactive par l'url. Merci à tous pour tout !!! foreach($obj->data->cameras as $cam) { $id_cam = $cam->id; echo "<p>Cam " . $id_cam . " detected</p>"; if($_GET['cam'] == "on") { if($cam->enabled) { echo "<p>Cam " . $id_cam . " deja enable</p>"; } else { $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&method=Enable&version='.$vCamera.'&cameraIds='.$id_cam.'&_sid='.$sid); echo "<p>Cam " . $id_cam . " enabled</p>"; } } if($_GET['cam'] == "off") { if(!$cam->enabled) { echo "<p>Cam " . $id_cam . " deja disable</p>"; } else { $json = file_get_contents($server.'/webapi/'.$path.'?api=SYNO.SurveillanceStation.Camera&method=Disable&version='.$vCamera.'&cameraIds='.$id_cam.'&_sid='.$sid); echo "<p>Cam " . $id_cam . " disabled</p>"; } } } 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Jojo (BE) Posté(e) le 20 août 2015 Partager Posté(e) le 20 août 2015 @Terrano,1) merci pour ce post ! 2) comment peut-on retrouver l'information sur une API particulière ?tu as donné l'exemple pour surveillance station (ok), mais je cherche une API qui pourrait me donner la MAC address de mon Syno. Je pensais à "SYNO.Core.Network.MACClone" par exmple, mais où (dans quel dir) trouver les infos nécessaires ? Merci de votre aide 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PiwiLAbruti Posté(e) le 20 août 2015 Partager Posté(e) le 20 août 2015 Je ne pense pas qu'il y ait une API chez Synology qui expose l'adresse Mac. Par contre tu peux la récupérer via SNMP : > snmpwalk -v 2c -c public -O 0v 127.0.0.1 iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifPhysAddress.2 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
sparh Posté(e) le 20 novembre 2015 Partager Posté(e) le 20 novembre 2015 Bonjour, merci pour le script qui semble fonctionner cependant mon image est blanche? Auriez vous une idée d'ou peux provenir le problème ? Merci d'avance 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
fredolamasse Posté(e) le 16 mars 2016 Partager Posté(e) le 16 mars 2016 (modifié) bonjour tout le monde. C'est bien sympa cette histoire avec Surveillance station, mais est-ce que que quelqu'un a test avec un autre package ou tout simplement les données du NAS (HDD / activité) etc ... ? Perso je galère, impossible d'avoir les commandes pour par exemple pouvoir monitorer le nas sur les hdd / températures etc. Si vous avez des news n'hésitez pas ;-) par exemple, ou trouver les infos des fichiers pour les item suivants ? SYNO.Core.Hardware.FanSpeed SYNO.Core.Storage.Volume SYNO.Core.System SYNO.Core.System.Utilization SYNO.DSM.Info avec la méthode suivante : Par exemple, pour retrouver les paramètres de l'API SYNO.SurveillanceStation.Camera, faites ceci : cd /var/packages/SurveillanceStation/target/webapi vi Camera/conf/SYNO.SurveillanceStation.Camera.lib Modifié le 16 mars 2016 par fredolamasse 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
gaetan.cambier Posté(e) le 17 mars 2016 Partager Posté(e) le 17 mars 2016 Lire la doc sur l'utilisation des api, ca aide 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dazmi94 Posté(e) le 17 mars 2016 Partager Posté(e) le 17 mars 2016 Bonjour à tous, Je suis dans le même cas de figure que fredolamasse, je voudrais savoir grâce à l'API l'état des backup ( Success, Error). J'ai alors suivi le mini-tutoriel de Terrano. J'arrive bel et bien à récupérer certaines information avec l'api SYNO.Backup.Task en utilisant la méthode List comme le nom de la tache ou l'id. Cependant, l’état des backup n'est pas exposé par cette API. J'ai donc essayé d'utiliser les autres API telles que SYNO.Backup.Task.Data, mais je me retrouve face à un mur, en effet, je ne trouve aucune information par rapport aux méthodes supportées pour une API spécifique. J'ai beau essayé de me rendre un dossier tel que terrano l'a montré : cd /var/packages/nom_api/target/webapi cependant, ce dossier n'existe pas. Existe-t-il un moyen de récupérer la liste des méthodes supportées pour les autre API et pas seulement la surveillance station ? Gaetan vous préconisez de lire la documentation sur les API, dans mes recherches je n'ai trouvé que des informations dans Synology Download Station Official API (https://global.download.synology.com/download/Document/DeveloperGuide/Synology_Download_Station_Web_API.pdf). Bien que le début du document comporte une partie générique permettant de comprendre les bases (authentification etc...) la suite du document se concentre exclusivement sur l'API Download Station. Connaîtriez-vous alors d'autre documentations ? Merci d'avance. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
fredolamasse Posté(e) le 30 mars 2016 Partager Posté(e) le 30 mars 2016 merci gaetan.cambier pour cette réponse hautement constructive. Si je pose la question c'est que je n'ai trouvé aucune autre API que celle de video station qui m'est totalement inutile. étant donné que ce n'est pas l'application dont je souhaite contrôler l'état. Mais merci de ton aide si précieuse. Effectivement Dazmi94 je pense qu'on est dans la même logique. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.