Aller au contenu

[Script] Web Api Synology


Messages recommandés

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é par Terrano
Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

$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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :P)

evidemment, + simple de lancé de fausse info que d'ouvrir un pdf pour vérifié pour certains

bref : RTFM

Modifié par Gaetan Cambier
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :P)

Modifié par Gaetan Cambier
Lien vers le commentaire
Partager sur d’autres sites

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par Terrano
Lien vers le commentaire
Partager sur d’autres sites

...

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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! ;)

Lien vers le commentaire
Partager sur d’autres sites

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>";
				}
    		}
    	}
Lien vers le commentaire
Partager sur d’autres sites

  • 5 mois après...

@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

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
  • 3 mois après...

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é par fredolamasse
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.