home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.97k stars 31.02k forks source link

Synology DSM Transmition failed #97392

Closed mansellrace closed 1 year ago

mansellrace commented 1 year ago

The problem

I have used this integration for years without any problems. Now I have this error. I have tried deleting and reinserting integration and I get the same error.

{'api': 'SYNO.Core.System.Utilization', 'code': 1055, 'reason': 'Unknown', 'details': {'err_line': 182, 'err_msg': 'Transmition failed.'}}

Full debug log here: https://pastebin.com/sAE1958R

image

What version of Home Assistant Core has the issue?

core-2023.7.2

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Synology DSM

Link to integration documentation on our website

https://www.home-assistant.io/integrations/synology_dsm

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

home-assistant[bot] commented 1 year ago

Hey there @hacf-fr, @quentame, @mib1185, mind taking a look at this issue as it has been labeled with an integration (synology_dsm) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `synology_dsm` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign synology_dsm` Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


synology_dsm documentation synology_dsm source (message by IssueLinks)

mib1185 commented 1 year ago

Hi @mansellrace the error message {'api': 'SYNO.Core.System.Utilization', 'code': 1055, 'reason': 'Unknown', 'details': {'err_line': 182, 'err_msg': 'Transmition failed.'}} is originated by the NAS itself, so there is something wrong with it. You may have a look into the log of the NAS, check if there were any changes done to the NAS and at least try to reboot it.

Tays005 commented 1 year ago

I have the same problem, impossible...

smarthomefamilyverrips commented 1 year ago

Hi @mansellrace the error message {'api': 'SYNO.Core.System.Utilization', 'code': 1055, 'reason': 'Unknown', 'details': {'err_line': 182, 'err_msg': 'Transmition failed.'}} is originated by the NAS itself, so there is something wrong with it. You may have a look into the log of the NAS, check if there were any changes done to the NAS and at least try to reboot it.

@mib1185 I tryed all the above and not works, also if I login from browser using the NAS IP address and my user credentials all works fine... so I not see why this would be a problem with NAS making the integration suddenly stop working after several months working without pronlems

mib1185 commented 1 year ago

did you also try to reboot the NAS?

smarthomefamilyverrips commented 1 year ago

did you also try to reboot the NAS?

@mib1185 yes I did try restart out of UI and also manually did turn off and on by use of power button.

Also did reboot my router that the NAS is connected to.

But as said through browser or mobile app the NAS is reachable and fully functional, I also run PLEX on my NAS and the HA integration for PLEX also not have any issues reaching the PLEX server on my NAS

mib1185 commented 1 year ago

the Plex integration does not interact with the NAS itself, but the Plex server software.

The Synology integration "speaks" direct the NAS itself and gets the response "Transmition failed." when trying to fetch the utilisation data from the NAS. Because this query has not been changed in the integration and because the response is generated by the NAS, it must be an issue with the NAS. Since it is about an issue with the 'SYNO.Core.System.Utilization' api of the NAS I would guess an issue with some attached usb drives or extension cards or internal drives or one of the drives goes into sleep while the utilisation is queries or or ... maybe an update of the NAS broke something (my nas is on DSM 7.2-64570 Update 1 and works without any issues)

smarthomefamilyverrips commented 1 year ago

@mib1185 mine did work fine till update of HA to 2023.8.4 also so maybe a other component breaks the Synology Integration....

When home I will check what version my NAS is on but I did not do any firmware update for at least a few weeks, if integration would had broken after update I would had see then.... but I will check

@mansellrace you still have the issue?

mib1185 commented 1 year ago

@mib1185 mine did work fine till update of HA to 2023.8.4 also so maybe a other component breaks the Synology Integration....

ok, that's a new information - which HA version did you use before?

smarthomefamilyverrips commented 1 year ago

@mib1185 2023.8.3

mib1185 commented 1 year ago

There was not any change between 2023.8.3 and 2023.8.4 for the Synology integration, so the update cannot be the cause. I'm still at the point, that there has to be something "wrong" with the NAS or its peripherals.

smarthomefamilyverrips commented 1 year ago

@mib1185 I am also on 7.2.64570 update 1 and my last package updates where for "Active Insight" and "QuickConnect" both done on 31st of August.... so that is only thing I can think of that could be related to this issue, I only not know in what way would be related

mib1185 commented 1 year ago

Since it is about an issue with the 'SYNO.Core.System.Utilization' api of the NAS I would guess an issue with some attached usb drives or extension cards or internal drives or one of the drives goes into sleep while the utilisation is queries or or

did you already checked this (the peripherals of your NAS)?

smarthomefamilyverrips commented 1 year ago

@mib1185 all I have is one HDD and I not see any unusual behavior

mib1185 commented 1 year ago

which NAS model do you use? please check the resource monitor app on the NAS if in any places (eq. cpu, disk, memory, ...) and any possible metrics (eq. utilisation, iops, usage, ...) are any issues. do you use any custom SNMP settings on the NAS? do you have any custom/3rd party software installed or somehow manipulated the OS off the NAS? is the HDD configured to go into standby/sleep after a while?

smarthomefamilyverrips commented 1 year ago

@mib1185 I have a DS 720 and have it set-up pretty standard, I not see any issues in NAS nor have 3rd party software or HDD configured to go to sleep mode

smarthomefamilyverrips commented 1 year ago

@mib1185 If I check connections in Source Control in my NAS it says that my user account is connected with the IP address of my HA, so it looks like.the integration actually does connect but somehow fails to setup

Tays005 commented 1 year ago

I also have the same problem.

I have two nos, an old one and a recent model. the old one a 3614 no problem the second a 1221 impossible.

I have exactly the same error. the nas are configured in the same way only the dms version is different.

smarthomefamilyverrips commented 1 year ago

@mib1185 you said at you did still work, but it also still works after you do a restart of your HA and NAS?

latez commented 1 year ago

Running into an identical issue it seems,

I am on - 2023.9.2 - interestingly enough my scenario is nearly identical.

I have two Synology's one on DSM6 (DS1812+) which seems to work perfectly fine. I also have a RS1221+ on DSM7 which after initial setup worked. After having a drive failure on the RS and replacing it, connectivity stopped. Removing it and re-adding it is yielding an identical error.

image

For the record I have restarted the NAS in full, twice actually. I've also restarted HA.

smarthomefamilyverrips commented 1 year ago

@mib1185 any idea what is the problem, did you try restart your own NAS and check if still works..

It looks like not is just a isolated problem as more people experience this

Tays005 commented 1 year ago

@latez

I have the same nose as you, and the same problems.

I think there is more of a compatibility problem with the latest version of DSM 7.2

I have another nas in DSM 7.1 and no problem

mib1185 commented 1 year ago

@mib1185 any idea what is the problem, did you try restart your own NAS and check if still works..

did not reboot my NAS, yet. but maybe I'll find time to do so this weekend.

After having a drive failure on the RS and replacing it, connectivity stopped.

sorry interesting and do somehow correlate with my previous thoughts, that there must be some issue with the peripherals of the NAS 🤔

it is still the situation, that the message Transmition failed. is originated by the NAS when trying to gather the utilisation data from the 'SYNO.Core.System.Utilization' api (which is already used since the beginning of this integration). In most other cases the "issue" could be solved by rebooting the NAS or disconnect identified faulty external devices.

smarthomefamilyverrips commented 1 year ago

"sorry interesting and do somehow correlate with my previous thoughts, that there must be some issue with the peripherals of the NAS 🤔"

@mib1185

I think it is because he had to reboot the NAS because of that had to replace the RS that made issues start with integration giving error at setup

And yes it is still the same situation.

mib1185 commented 1 year ago

Sooner as expected, did a reboot of my NAS some moments ago - the integration did recover as expected without any issue, it is up and running.

Will going to write and provide a short test script within the next days (my private 📆 ist already filled this weekend), which should collect further debug data, so we can get the root cause of this issue.

latez commented 1 year ago

I however am still having this issue unfortunately - It is being discovered constantly but any time I try to login with the prescribed user I am being greeted with the error.

image (this user has 2FA bypass).

I've also used the admin account where 2FA is enabled, I get prompted for the 2FA which appears to work fine but am again greeted with the same error...

image

image

image

Logger: homeassistant.components.synology_dsm.config_flow Source: components/synology_dsm/config_flow.py:353 Integration: Synology DSM (documentation, issues) First occurred: September 17, 2023 at 12:14:08 AM (2 occurrences) Last logged: 4:13:18 PM

{'api': 'SYNO.Core.System.Utilization', 'code': 1055, 'reason': 'Unknown', 'details': {'err_line': 182, 'err_msg': 'Transmition failed.'}}

smarthomefamilyverrips commented 1 year ago

Here also still same

latez commented 1 year ago

Just an update, still hoping a developer looks at this. On the latest version of HA (2023.10.0) Still happening.

image

smarthomefamilyverrips commented 1 year ago

Here also still same issue

kbirger commented 1 year ago

I'm having the same issue since the update of home assistant.

I'm using a DS920+ on DSM 7.2-64570 Update 1

The interesting thing is, HA logs report a 200 response from Synology API. Perhaps they updated the response body structure in a way that the HA integration does not handle? See logs below:

User 1: home assistant service account. I updated the account to have full access. It as already part of the admin group, but now: part of admin group, with access to all applications and folders. Just to exclude any such issues

2023-10-10 09:14:24.768 DEBUG (MainThread) [synology_dsm.synology_dsm] Successful returned data 2023-10-10 09:14:24.768 DEBUG (MainThread) [synology_dsm.synology_dsm] RESPONSE: {'error': {'code': 1055, 'errors': {'err_line': 182, 'err_msg': 'Transmition failed.'}}, 'success': False} 2023-10-10 09:14:24.768 DEBUG (MainThread) [synology_dsm.synology_dsm] Session error: 1055 2023-10-10 09:14:24.769 ERROR (MainThread) [homeassistant.components.synology_dsm.config_flow] {'api': 'SYNO.Core.System.Utilization', 'code': 1055, 'reason': 'Unknown', 'details': {'err_line': 182, 'err_msg': 'Transmition failed.'}}

User 2 (my main user, with 2fa). I enter credentials, and then it prompts for 2fa. When provided, error. The interesting thing is, I see that previous requests are succeeding. So it may be something about this particular endpoint.

2023-10-10 09:16:24.907 DEBUG (MainThread) [synology_dsm.synology_dsm] Creating new session 2023-10-10 09:16:24.907 DEBUG (MainThread) [synology_dsm.synology_dsm] API: SYNO.API.Info 2023-10-10 09:16:24.907 DEBUG (MainThread) [synology_dsm.synology_dsm] Request Method: GET 2023-10-10 09:16:24.949 DEBUG (MainThread) [synology_dsm.synology_dsm] Request url: https://192.168.1.106:5001/webapi/query.cgi?api=SYNO.API.Info&version=1&method=query 2023-10-10 09:16:24.949 DEBUG (MainThread) [synology_dsm.synology_dsm] Response status_code: 200 2023-10-10 09:16:24.949 DEBUG (MainThread) [synology_dsm.synology_dsm] Response headers: {'Date': 'Tue, 10 Oct 2023 13:16:24 GMT', 'Content-Type': 'application/json; charset="UTF-8"', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=20', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'Cache-Control': 'max-age=0, no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0'} 2023-10-10 09:16:24.952 DEBUG (MainThread) [synology_dsm.synology_dsm] Successful returned data 2023-10-10 09:16:24.954 DEBUG (MainThread) [synology_dsm.synology_dsm] RESPONSE: {'data': {'SYNO.AME.Config': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.AME.License': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.AME.Pack': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.AME.Payment': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Auth': {'maxVersion': 7, 'minVersion': 1, 'path': 'entry.cgi'}, 'SYNO.API.Auth.Key': {'maxVersion': 7, 'minVersion': 7, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Auth.Key.Code': {'maxVersion': 7, 'minVersion': 7, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Auth.RedirectURI': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Auth.Type': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Auth.UIConfig': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Encryption': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.API.OTP': {'maxVersion': 1, 'minVersion': 1, 'path': 'otp.cgi'}, 'SYNO.ActiveInsight.CompleteCollection': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.ActiveInsight.License': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.ActiveInsight.Package': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.ActiveInsight.Setting': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.AudioPlayer': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.AudioPlayer.Stream': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Auth.ForgotPwd': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Auth.RescueEmail': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.App': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.App.Backup': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.App.Restore': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.App2.Backup': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.App2.Restore': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Config.AutoBackup': {'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.Lunbackup': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Repository': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Repository.Certificate': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Repository.LoginPort': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Restore': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Service.NetworkBackup': {'maxVersion': 1, '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.AmazonCloudDrive.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.Azure.Container': {'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.Dropbox.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.GoogleDrive.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.HiDrive.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.OpenStack.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.OpenStack.Region': {'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.Share.Local': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.Share.Network': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.Share.Rsync': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.WebDAV.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Storage.hubiC.Container': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Target': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Target.Config': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Task': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Version': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Backup.Version.History': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Account': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Bucket': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Conf': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.File': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Share': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Share.Status': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Transform': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.C2FS.Utils': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ACL': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ActionPriv': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ActionPriv.Role': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppNotify': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPortal': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPortal.AccessControl': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPortal.Config': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPortal.ReverseProxy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPriv': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPriv.App': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.AppPriv.Rule': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.BackgroundTask': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.BandwidthControl': {'maxVersion': 2, '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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.CMS.Identity': {'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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.CMS.Task': {'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.Certificate.LetsEncrypt': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Certificate.LetsEncrypt.Account': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Certificate.Service': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Certificate.Tencent': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.CurrentConnection': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DDNS.Ethernet': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DDNS.ExtIP': {'maxVersion': 2, '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.DDNS.TWNIC': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DSMNotify': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DSMNotify.MailContent': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DSMNotify.Strings': {'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.Defs': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.Initdata': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.JSUIString': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.PersonalUpdater': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.SessionData': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.Timeout': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.UIString': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Desktop.Upgrade': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.Azure.SSO': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.Domain': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.Domain.Conf': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.Domain.Schedule': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.Domain.Trust': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.LDAP': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.LDAP.BaseDN': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.LDAP.Login.Notify': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.LDAP.Profile': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.LDAP.Refresh': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.LDAP.User': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.OIDC.SSO': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.CAS': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.IWA': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.Profile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.SAML': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.SAML.Metadata': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.SAML.Status': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.Setting': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.Status': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.SSO.utils': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Directory.WebSphere.SSO': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.Common': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.Debug': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.Domain': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.DomainJoin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.DomainService': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.DomainValidation': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.LDAP': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DirectoryServiceCheck.Progress': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.DisableAdmin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.EW.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.EventScheduler': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.EventScheduler.Root': {'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.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.Factory.Config': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Factory.Manutild': {'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.FileHandle': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.AFP': {'maxVersion': 2, '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': 3, '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.ConfBackup': {'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.ReflinkCopy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.Rsync.Account': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.SMB': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.SMB.ConfBackup': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.SMB.Control': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.SMB.MSDFS': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.ServiceDiscovery': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.FileServ.ServiceDiscovery.WSTransfer': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Findhost': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Group': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Group.ExtraAdmin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Group.Member': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Group.ValidLocalAdmin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.GroupSettings': {'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.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.Led.Brightness': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Hardware.MemoryLayout': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Hardware.NeedReboot': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Hardware.OOBManagement': {'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.RemoteFanStatus': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Hardware.SpectreMeltdown': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Hardware.VideoTranscoding': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Hardware.ZRAM': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Help': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.FCTarget': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.Host': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.LUN': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.Lunbkp': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.Node': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.Replication': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.Target': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.ISCSI.VMware': {'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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.MediaIndexing.Scheduler': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.MediaIndexing.ThumbnailQuality': {'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.Login': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.MyDSCenter.Logout': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.MyDSCenter.Purchase': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network.Authentication': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network.Authentication.Cert': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network.Bond': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network.Ethernet': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network.Ethernet.External': {'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.Interface': {'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.OVS': {'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.Gateway.List': {'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.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.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.OpenVPNWithConf': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Network.VPN.OpenVPNWithConf.Certs': {'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.WOL': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.NormalUser': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.NormalUser.LoginNotify': {'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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Advance.FilterSettings.Profile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Advance.FilterSettings.Template': {'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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Line': {'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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Mail.Oauth': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Mail.Profile.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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Push.Mobile': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Push.Webhook.Provider': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.SMS': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.SMS.Conf': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.SMS.Provider': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Notification.Sysnotify': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OAuth.Scope': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OAuth.Server': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OTP': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OTP.Admin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OTP.EnforcePolicy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OTP.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.OTP.Mail': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.AutoUpgrade.Progress': {'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.FakeIFrame': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Feed': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Installation': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Installation.Download': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Legal.PreRelease': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.MyDS': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.MyDS.Purchase': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Progress': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Screenshot': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Screenshot.Server': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Server': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Setting': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Setting.Update': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Setting.Volume': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Thumb': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Thumb.Server': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Package.Uninstallation': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PersonalNotification.Device': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PersonalNotification.Event': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PersonalNotification.Filter': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PersonalNotification.Mobile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PersonalNotification.Settings': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PersonalSettings': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.PhotoViewer': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Polling.Data': {'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.RouterInfo': {'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.Promotion.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Promotion.PreInstall': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickConnect': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickConnect.Hostname': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickConnect.Permission': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickConnect.RegisterSite': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickConnect.SNI': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickConnect.Upnp': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickStart.Info': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.QuickStart.Install': {'maxVersion': 1, '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': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Region.NTP.DateTimeFormat': {'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.ResetAdmin': {'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': 5, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.DSM.Embed': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.DSM.Proxy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.DoS': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.Firewall': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.Firewall.Adapter': {'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.Geoip': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.Firewall.Profile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.Firewall.Profile.Apply': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.Firewall.Rules': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Security.Firewall.Rules.Serv': {'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': 3, '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.KeyManager.AutoKey': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Share.KeyManager.Key': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Share.KeyManager.MachineKey': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Share.KeyManager.Store': {'maxVersion': 2, '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.PermissionReport': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Share.Snapshot': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Sharing': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Sharing.Initdata': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Sharing.Login': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Sharing.Session': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.SmartBlock': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.SmartBlock.Device': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.SmartBlock.Trusted': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.SmartBlock.Untrusted': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.SmartBlock.User': {'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.Disk.FWUpgrade': {'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.Storage.iSCSILUN': {'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.Synohdpack': {'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.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.SyslogClient.PersonalActivity': {'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.Status': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.System': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.System.Process': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.System.ProcessGroup': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.System.ResetButton': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.System.Status': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.System.SystemHealth': {'maxVersion': 1, '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': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.TaskScheduler.Root': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Terminal': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Theme.AppPortalLogin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Theme.Desktop': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Theme.FileSharingLogin': {'maxVersion': 1, '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.TrustDevice': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Tuned': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.UISearch': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.AutoUpgrade': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Cluster.Patch': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Cluster.Server': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Cluster.Server.Download': {'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.Group.Setting': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.GroupInstall': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.GroupInstall.Network': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.JuniorModeData': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Patch': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.PreCheck': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.RemoteAction': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Server': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Server.Download': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Upgrade.Setting': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.User': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.User.Group': {'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.PasswordConfirm': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.User.PasswordExpiry': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.User.PasswordMeter': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.User.PasswordPolicy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.User.UsernamePolicy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.UserSettings': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Virtualization.Host.Capability': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Web.DSM': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Web.DSM.External': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Web.Security.HTTPCompression': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Core.Web.Security.TLSProfile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DR.Node': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DR.Node.Credential': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DR.Node.Session': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DSM.FindMe': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DSM.Info': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DSM.Network': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DSM.PortEnable': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DSM.PushNotification': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Default.API': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DisasterRecovery.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.DisasterRecovery.Retention': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Container': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Container.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Container.PkgProfile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Container.Profile': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Container.Resource': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Image': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Migrate': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Network': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Project': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Docker.Registry': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Entry.Request': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Entry.Request.Polling': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Entry.SocketIo': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.BackgroundTask': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.CheckExist': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.CheckPermission': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Compress': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.CopyMove': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.CreateFolder': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Delete': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.DirSize': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Download': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.External.GoogleDrive': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Extract': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Favorite': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.FormUpload': {'maxVersion': 2, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Info': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.List': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.MD5': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Mount': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Mount.List': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Notify': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.PhotoUpload': {'maxVersion': 3, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Property': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Property.ACLOwner': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Property.CompressSize': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Property.Mtime': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Rename': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Search': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Search.History': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Settings': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Sharing': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Sharing.Download': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Snapshot': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Thumb': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Timeout': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.UIString': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Upload': {'maxVersion': 3, 'minVersion': 2, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.UserGrp': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.VFS.Connection': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.VFS.File': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.VFS.GDrive': {'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': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Worm': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FileStation.Worm.Lock': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.AppIndexing.Search': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.Bookmark': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.Elastic.SearchHistory': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.Elastic.Spotlight': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.Elastic.Term': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.File': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.File.Cover': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.File.Thumbnail': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.FileIndexing.Folder': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.FileIndexing.Highlight': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.FileIndexing.Indicate': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.FileIndexing.Search': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.FileIndexing.Status': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.FileIndexing.Term': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.Preference': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.Settings': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Finder.UserGrp': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FolderSharing.Download': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FolderSharing.List': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FolderSharing.Thumb': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.BackgroundTask.File': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.BackgroundTask.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Album': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Category': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Concept': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.ConditionAlbum': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Diff': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Folder': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.GeneralTag': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Geocoding': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Item': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.NormalAlbum': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Person': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.RecentlyAdded': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Timeline': {'maxVersion': 5, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Browse.Unit': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Development.Admin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Download': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Favorite': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Index': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Migration': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Notification': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.PhotoRequest': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.PublicSharing': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Search.Filter': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Search.Search': {'maxVersion': 6, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Setting.Admin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Setting.Guest': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Setting.MobileCompatibility': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Setting.TeamSpace': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Setting.User': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Setting.Wizard': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Sharing.Misc': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Sharing.Passphrase': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Streaming': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Thumbnail': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Upload.Item': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.Upload.PhotoRequestItem': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Foto.UserInfo': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.BackgroundTask.File': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Concept': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Diff': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Folder': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.GeneralTag': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Geocoding': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Item': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Person': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.RecentlyAdded': {'maxVersion': 4, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Timeline': {'maxVersion': 5, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Browse.Unit': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Download': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Index': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Search.Filter': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Search.Search': {'maxVersion': 6, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Sharing.FolderBatchPermission': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Sharing.FolderPermission': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Sharing.Passphrase': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Streaming': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Thumbnail': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.FotoTeam.Upload.Item': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.License.HA': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Lunbackup': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.OAUTH.Client': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.OAUTH.Common': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.OAUTH.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.OAUTH.Token': {'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.PersonMailAccount.Mail.Oauth': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Application.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.MailAccount': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.MailAccount.Contacts': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.MailAccount.Mail': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Conf': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Device': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Event': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Filter': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.GDPR': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Identifier': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Mobile': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Settings': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.Token': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Notification.VapidPublicKey': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Profile': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Personal.Profile.Photo': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Remote.Credential': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Remote.Credential.Challenge': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Remote.Credential.Info': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Remote.Credential.Verifier': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.ResourceMonitor.EventRule': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.ResourceMonitor.Log': {'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.SAS.APIRunner': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SAS.APIRunner.Chatbot': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SAS.Encryption': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SAS.Group': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SAS.Group.Members': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SAS.Guest': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Common.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Common.Statistic': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Common.Target': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Common.Version': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Explore.File': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Explore.Folder': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Explore.Job': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Explore.Target': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Explore.Version': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SDS.Backup.Client.Fuse.Target': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.AMFA.Mail.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.AMFA.Policy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.AMFA.SuggestConn': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator.Info': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator.Registration': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator.Registration.Ex': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator.Request': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Authenticator.Verdict': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Fido.Manage': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Fido.Manage.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Fido.Register': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Fido.Register.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Method': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Method.Admin': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Method.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Package': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Package.Ex': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecureSignIn.Package.Request': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.Conf': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.Conf.Checklist': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.Conf.Checklist.Alert': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.Conf.Location': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.LoginActivity': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.LoginActivity.User': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.Report': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SecurityAdvisor.Report.HTML': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Snap.Usage.Share': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.BtrfsDedupe': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Cache.Protection': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Check': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.DetectedPool': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.DualEnclosure': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Enclosure': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.EncryptionKeyVault': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.EncryptionKeyVault.UnlockMode': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Flashcache': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.HddMan': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.KMIP': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Pool': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Scrubbing': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Smart': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Smart.Scheduler': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Spare': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Spare.Conf': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Storage': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.TaipeiEnclosure': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Volume': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Volume.Installer': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Storage.CGI.Volume.OfflineOp': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SupportService.Setting': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.AdvanceSharing': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.AdvanceSharing.Public': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.AppIntegration': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Authentication': {'maxVersion': 3, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Config': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Connection': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.DBUsage': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.DSM': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Dashboard': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Files': {'maxVersion': 6, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.HybridShare.Privilege': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Index': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Info': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.KeyManagement': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Labels': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Log': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Metrics': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Metrics.Token': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Migration': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Migration.UserHome': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Node': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Node.Delete': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Node.Download': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Node.Restore': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Notifications': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Office': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Photos': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Privilege': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Profiles': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Revisions': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.SCIM.Photo': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.SCIM.User': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Services.DocumentViewer': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Services.SynologyChat': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Services.VideoStation': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Settings': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Shard': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Share': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Share.Priv': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Sharing': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Sharing.Report': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Statistics': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.String': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Tasks': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.TeamFolders': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Trash': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Users': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDrive.Webhooks': {'maxVersion': 2, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDriveShareSync.Config': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDriveShareSync.Connection': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDriveShareSync.Session': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.SynologyDriveShareSync.Session.Set': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.Utils': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.VideoPlayer.Subtitle': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.VideoPlayer.SynologyDrive.Subtitle': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.WebRTC.Proxy': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}, 'SYNO.WebRTC.Proxy.Sharing': {'maxVersion': 1, 'minVersion': 1, 'path': 'entry.cgi', 'requestFormat': 'JSON'}}, 'success': True}

latez commented 1 year ago

Not sure if this integration is maintained any longer?

smarthomefamilyverrips commented 1 year ago

@mib1185 any news? Or maybe @Quentame can jump in also?

kbirger commented 1 year ago

Not sure if this integration is maintained any longer?

I'd be surprised if it was not, given it's one of the core integrations. It has commits from the last couple of months. If I have some free time, I might try to run this on a dev instance of HA and debug what's happening. The debug logs don't tell me much about this request... It probably wouldn't be this week though. I have to install a ceiling fan and clean my house up before Friday. It's a warzone right now :)

mib1185 commented 1 year ago

Not sure if this integration is maintained any longer?

Hi 👋 yes it is still maintained, but first to say most of us (like myself) do this all in their free spare time and tbh my priorities during summer months lays on other things 😉 Further in the past nearly all of these "transmission failed" issues were caused by hardware issues (defect cache SSD, defect data drive, "unreachable" connected usb devices...) or manuell changes in the system of the NAS. Often just a reboot solved the issue for the users (see some of my comments above) Last but not least, till now I was not able to reproduce this error on my system (ds620slim on DSM 7.2-64570 Update 1), those I've nothing to analyse in my environment and (see first point) no time to analyse some issues on a foreign NAS system. But hey ... this is an open source project, with a great supporting and contributing community, so anyone is welcome who can reproduce the issue on it's own environment and is able to deep-dive into the NAS to analyse what's going on 🤝✌️

kbirger commented 1 year ago

From my logs, it looks like the response for this call isn't logged like the other ones. Any idea why that is?

As I said, I can try to find some time to look into it, but if you have any tips or suggestions that might help, that'd be appreciated

mib1185 commented 1 year ago

with this simple script you can trigger a call to the SYNO.Core.System.Utilization api (adjust IPADDRESS, USERNAME and PASSWORD). You may need first to install the py-synology-api lib via pip3 install py-synologydsm-api==2.1.4

import asyncio
import aiohttp
from synology_dsm import SynologyDSM

async def main():
    async with aiohttp.ClientSession(
        connector=aiohttp.TCPConnector(verify_ssl=False)
    ) as session:
        await do(session)

async def do(session: aiohttp.ClientSession):
    api = SynologyDSM(
        session,
        dsm_ip="IPADDRESS",
        dsm_port=5001,
        username="USERNAME",
        password="PASSWORD",
        use_https=True,
    )

    await api.login()

    print("=== Utilization ===")
    await api.utilisation.update()
    print(f"api.utilisation.cpu: {api.utilisation.cpu}")
    print(f"api.utilisation.memory: {api.utilisation.memory}")
    print(f"api.utilisation.network: {api.utilisation.network}")

if __name__ == "__main__":
    asyncio.run(main())

As i`m not an engineer or developer of Synology, i do not know, if/how/where the webapi writes logs - this is all i figured out, yet:

you may find something helpful in the kernel messages (dmesg) 🤔

EDIT: AFAIK the utilization data is internally gathered via SNMP, those it should also be a good idea to check the following two OID with an snmpwalk for errors (eq. snmpwalk -v2c -c <COMMUNITYSTRING> <NASIP> <OID>):

kbirger commented 1 year ago

Thanks. I'll take a look as soon as I can.

mansellrace commented 1 year ago

with this simple script you can trigger a call to the SYNO.Core.System.Utilization api (adjust IPADDRESS, USERNAME and PASSWORD). You may need first to install the py-synology-api lib via pip3 install py-synologydsm-api==2.1.4

import asyncio
import aiohttp
from synology_dsm import SynologyDSM

async def main():
    async with aiohttp.ClientSession(
        connector=aiohttp.TCPConnector(verify_ssl=False)
    ) as session:
        await do(session)

async def do(session: aiohttp.ClientSession):
    api = SynologyDSM(
        session,
        dsm_ip="IPADDRESS",
        dsm_port=5001,
        username="USERNAME",
        password="PASSWORD",
        use_https=True,
    )

    await api.login()

    print("=== Utilization ===")
    await api.utilisation.update()
    print(f"api.utilisation.cpu: {api.utilisation.cpu}")
    print(f"api.utilisation.memory: {api.utilisation.memory}")
    print(f"api.utilisation.network: {api.utilisation.network}")

if __name__ == "__main__":
    asyncio.run(main())

As i`m not an engineer or developer of Synology, i do not know, if/how/where the webapi writes logs - this is all i figured out, yet:

  • /var/log/synoplugin.log here you will find the login procedure including check of permissions...
  • /var/log/nginx/error.log this is the error logfile of the web server
  • /etc/nginx/nginx.conf.run running configuration of the web server
  • /usr/local/etc/nginx/conf.d and /usr/local/etc/nginx/sites-enabled config file includes
  • /usr/syno/synoman/webapi/lib/SYNO.Core.System.Utilization.so the binary file which "is" the SYNO.Core.System.Utilization api endpoint

you may find something helpful in the kernel messages (dmesg) 🤔

=== Utilization === Traceback (most recent call last): File "/root/syno.py", line 33, in <module> asyncio.run(main()) File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run return loop.run_until_complete(main) File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete return future.result() File "/root/syno.py", line 10, in main await do(session) File "/root/syno.py", line 26, in do await api.utilisation.update() File "/usr/local/lib/python3.9/dist-packages/synology_dsm/api/core/utilization.py", line 13, in update raw_data = await self._dsm.get(self.API_KEY, "get") File "/usr/local/lib/python3.9/dist-packages/synology_dsm/synology_dsm.py", line 207, in get return await self._request("GET", api, method, params, **kwargs) File "/usr/local/lib/python3.9/dist-packages/synology_dsm/synology_dsm.py", line 296, in _request raise SynologyDSMAPIErrorException( synology_dsm.exceptions.SynologyDSMAPIErrorException: {'api': 'SYNO.Core.System.Utilization', 'code': 1055, 'reason': 'Unknown', 'details': {'err_line': 182, 'err_msg': 'Transmition failed.'}}

mib1185 commented 1 year ago

@mansellrace this is expected, because your NAS has an issue when querying the SYNO.Core.System.Utilization api. if possible, please try to do as most as possible of the digging into the files, logs and snmpwalks as mentioned in https://github.com/home-assistant/core/issues/97392#issuecomment-1758095178

latez commented 1 year ago

Hope this information is useful - this is output from the above mentioned logs when executing the provided python script.- hope it helps. Config files attached as zip. syno.zip

2023-10-12T07:00:00-05:00 somenas synoscgi_SYNO.API.Auth_7_login[13132]:
plugin_action.c:76 synoplugin: [PRE][weblogin][weblogin][MAIN] Plugin
Action Start
2023-10-12T07:00:00-05:00 somenas synoplugind[13135]: daemon.cpp:83
Credentials from SO_PEERCRED: pid=13132, euid=0, egid=0
2023-10-12T07:00:00-05:00 somenas synoplugind[13135]: plugin_init.cpp:48
Plugin Init [13132][PRE][weblogin][weblogin]
2023-10-12T07:00:00-05:00 somenas synoplugind[13135]: plugin_action.cpp:336
[13132][PRE][weblogin][MAIN]
Scripts=[secure_login_logger,secure_signin_weblogin_move_directory.sh,syn
[syno.zip](https://github.com/home-assistant/core/files/12882214/syno.zip)
ocgi-plugin-weblogin,user-preference-check-permission.sh];
Args=[USER=hass,TYPE=passwd,IS_KNOWN_DEVICE=no]
2023-10-12T07:00:00-05:00 somenas synoplugind[13147]: plugin_action.cpp:336
[13132][PRE][weblogin][user-preference-check-permission.sh] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13147]: plugin_action.cpp:336
[13132][PRE][weblogin][user-preference-check-permission.sh] Runtime: 0.007s
2023-10-12T07:00:00-05:00 somenas synoplugind[13144]: plugin_action.cpp:336
[13132][PRE][weblogin][secure_login_logger] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13144]: plugin_action.cpp:336
[13132][PRE][weblogin][secure_login_logger] Runtime: 0.013s
2023-10-12T07:00:00-05:00 somenas synoplugind[13146]: plugin_action.cpp:336
[13132][PRE][weblogin][synocgi-plugin-weblogin] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13146]: plugin_action.cpp:336
[13132][PRE][weblogin][synocgi-plugin-weblogin] Runtime: 0.017s
2023-10-12T07:00:00-05:00 somenas synoplugind[13145]: plugin_action.cpp:336
[13132][PRE][weblogin][secure_signin_weblogin_move_directory.sh] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13145]: plugin_action.cpp:336
[13132][PRE][weblogin][secure_signin_weblogin_move_directory.sh] Runtime:
0.046s
2023-10-12T07:00:00-05:00 somenas synoscgi_SYNO.API.Auth_7_login[13132]:
plugin_action.c:76 synoplugin: [PRE][weblogin][weblogin][MAIN] Runtime:
0.085s
2023-10-12T07:00:00-05:00 somenas synoscgi_SYNO.API.Auth_7_login[13132]:
plugin_action.c:76 synoplugin: [POST][weblogin][weblogin][MAIN] Plugin
Action Start
2023-10-12T07:00:00-05:00 somenas synoplugind[13157]: daemon.cpp:83
Credentials from SO_PEERCRED: pid=13132, euid=0, egid=0
2023-10-12T07:00:00-05:00 somenas synoplugind[13157]: plugin_init.cpp:48
Plugin Init [13132][POST][weblogin][weblogin]
2023-10-12T07:00:00-05:00 somenas synoplugind[13157]: plugin_action.cpp:336
[13132][POST][weblogin][MAIN]
Scripts=[secure_login_logger,secure_signin_weblogin_move_directory.sh,synocgi-plugin-weblogin,user-preference-check-permission.sh];
Args=[USER=hass,TYPE=passwd,SESSION=webui,API_VERSION=7,IS_KNOWN_DEVICE=no,IP=192.168.1.199,AGENT=Python/3.11
aiohttp/3.8.6,STATUS=success,RESULT=1]
2023-10-12T07:00:00-05:00 somenas synoplugind[13167]: plugin_action.cpp:336
[13132][POST][weblogin][secure_signin_weblogin_move_directory.sh] ExitCode:
0
2023-10-12T07:00:00-05:00 somenas synoplugind[13167]: plugin_action.cpp:336
[13132][POST][weblogin][secure_signin_weblogin_move_directory.sh] Runtime:
0.002s
2023-10-12T07:00:00-05:00 somenas synoplugind[13169]: plugin_action.cpp:336
[13132][POST][weblogin][user-preference-check-permission.sh] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13169]: plugin_action.cpp:336
[13132][POST][weblogin][user-preference-check-permission.sh] Runtime: 0.002s
2023-10-12T07:00:00-05:00 somenas synoplugind[13166]: plugin_action.cpp:336
[13132][POST][weblogin][secure_login_logger] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13166]: plugin_action.cpp:336
[13132][POST][weblogin][secure_login_logger] Runtime: 0.014s
2023-10-12T07:00:00-05:00 somenas synoplugind[13168]: plugin_action.cpp:336
[13132][POST][weblogin][synocgi-plugin-weblogin] ExitCode: 0
2023-10-12T07:00:00-05:00 somenas synoplugind[13168]: plugin_action.cpp:336
[13132][POST][weblogin][synocgi-plugin-weblogin] Runtime: 0.016s
2023-10-12T07:00:00-05:00 somenas synoscgi_SYNO.API.Auth_7_login[13132]:
plugin_action.c:76 synoplugin: [POST][weblogin][weblogin][MAIN] Runtime:
0.053s
kbirger commented 1 year ago

It doesn't look like the error is captured in those logs. According to the other logs I've seen, it looks like the error actually occurs after "login".

What is the source of those logs btw? I'm new to troubleshooting HA. It's been working way too smoothly for me 😅

DidierMetral commented 1 year ago

Hi, Tkanks to mib1185 comment, I solved the problem on my side. The issue was caused by snmp conf file on my nas (with SNMP disabled in DSM control panel) .

Not sure if the snmp reconfiguration is needed.

Hope that can help someone.

latez commented 1 year ago

HA I just had the EXACT same thing, when I went to enable snmp it wouldn't start, after following your suggestion everything seems to be right as rain. What an odd set of behaviors and thank you all for your help!

On Thu, Oct 12, 2023 at 9:18 AM DidierMetral @.***> wrote:

Hi, Tkanks to mib1185 comment, I solved the problem on my side. The issue was caused by snmp conf file on my nas (with SNMP disabled in DSM control panel) .

  • I tried to launch the snmpwalk from my synology and the command timeouted.
  • I tried to restart snmpd but the restart failed (got this message in /var/log/synosnmpcd.log " buffer overflow detected : terminated")
  • After moving /var/lib/net-snmp/snmpd.0.conf to a backup storage (juste in case) the restart was OK.
  • I reconfigured the snmp (enabled and disabled SNMP in DSM control pannel)
  • Integration worked again.

Not sure if the snmp reconfiguration is needed.

Hope that can help someone.

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/97392#issuecomment-1759598221, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA3MRVZOALXHO3FVIZQYBXLX67UY3AVCNFSM6AAAAAA23KFNI2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONJZGU4TQMRSGE . You are receiving this because you were mentioned.Message ID: @.***>

kbirger commented 1 year ago

This solved it for me too. Good find!

Some additional details:

smarthomefamilyverrips commented 1 year ago

@kbirger @latez where I can find the file that need to delete? It is on the NAS itself? And after deleting what need to restart? The NAS or the DSM integration in HA?

latez commented 1 year ago

As mentioned in a previous email -

The path for the file is here - /var/lib/net-snmp/ , the file to delete is snmpd.0.conf , restart the service by toggling snmp on/off in the SNMP & Terminal (gui control panel).

What I had in /var/log/synosnmpd.log is probably what you all are experiencing - 'snmpd.sh[19931]: buffer overflow detected : terminated'

On Thu, Oct 12, 2023 at 2:08 PM sesame_madness @.***> wrote:

@kbirger https://github.com/kbirger @latez https://github.com/latez where I can find the file that need to delete? It is on the NAS itself? And after deleting what need to restart? The NAS or the DSM integration in HA?

— Reply to this email directly, view it on GitHub https://github.com/home-assistant/core/issues/97392#issuecomment-1760123049, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA3MRVYHSMB5R5LUDHJOXM3X7AW3TAVCNFSM6AAAAAA23KFNI2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRQGEZDGMBUHE . You are receiving this because you were mentioned.Message ID: @.***>

smarthomefamilyverrips commented 1 year ago

As mentioned in a previous email - The path for the file is here - /var/lib/net-snmp/ , the file to delete is snmpd.0.conf , restart the service by toggling snmp on/off in the SNMP & Terminal (gui control panel). What I had in /var/log/synosnmpd.log is probably what you all are experiencing - 'snmpd.sh[19931]: buffer overflow detected : terminated' On Thu, Oct 12, 2023 at 2:08 PM sesame_madness @.> wrote: @kbirger https://github.com/kbirger @latez https://github.com/latez where I can find the file that need to delete? It is on the NAS itself? And after deleting what need to restart? The NAS or the DSM integration in HA? — Reply to this email directly, view it on GitHub <#97392 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA3MRVYHSMB5R5LUDHJOXM3X7AW3TAVCNFSM6AAAAAA23KFNI2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRQGEZDGMBUHE . You are receiving this because you were mentioned.Message ID: @.>

@latez I did see this in your previous post but I not know where or how to open this path?

kbirger commented 1 year ago

The only way I know to do this is to use ssh. Are you familiar with ssh? There may be a package for synology that allows you to edit such files, but I doubt it.

This guy's guides are usually pretty digestible https://mariushosting.com/how-to-ssh-into-a-synology-nas/

You will need to run the command as root by using sudo

mansellrace commented 1 year ago

It works perfectly! Thank you very much!

Hi, Tkanks to mib1185 comment, I solved the problem on my side. The issue was caused by snmp conf file on my nas (with SNMP disabled in DSM control panel) .

  • I tried to launch the snmpwalk from my synology and the command timeouted.
  • I tried to restart snmpd but the restart failed (got this message in /var/log/synosnmpcd.log " buffer overflow detected : terminated")
  • After moving /var/lib/net-snmp/snmpd.0.conf to a backup storage (juste in case) the restart was OK.
  • I reconfigured the snmp (enabled and disabled SNMP in DSM control pannel)
  • Integration worked again.

Not sure if the snmp reconfiguration is needed.

Hope that can help someone.

It works perfectly! Thank you very much!

smarthomefamilyverrips commented 1 year ago

The only way I know to do this is to use ssh. Are you familiar with ssh? There may be a package for synology that allows you to edit such files, but I doubt it.

This guy's guides are usually pretty digestible https://mariushosting.com/how-to-ssh-into-a-synology-nas/

You will need to run the command as root by using sudo

@kbirger you mentioned in previous post you only deleted the file and "restarted" ..... what exactly you restarted?