Environment
| Component |
Version |
| DSM |
7.3.2-86009 Update 3 |
| synology-api |
0.8.2 (PyPI latest) |
| Python |
3.14 |
| NAS Model |
DS1821+ |
Description
Share.create_folder() returns error 3300 when called against DSM 7.3.2-86009 Update 3. All read operations (list_folders, get) work correctly — only create is affected.
Steps to Reproduce
from synology_api.core_share import Share
share = Share(
ip_address="mynas.local",
port="5001",
username="myadmin",
password="mypassword",
secure=True,
cert_verify=False,
dsm_version=7
)
# Works fine:
result = share.list_folders() # success
# Fails with error 3300:
result = share.create_folder(name="TestShare", vol_path="/volume1")
# CoreError: Error 3300 - <Undefined.SYNO.Core.Share.Error>
Error Output
Both HTTPS (plaintext params) and HTTP (Noise protocol encryption) return error 3300:
| Transport |
Encryption |
User |
Error |
| HTTPS |
Plaintext (skips encryption) |
admin |
3300 |
| HTTP |
Noise protocol encrypted |
admin |
3300 |
| HTTPS |
Plaintext |
non-admin |
3300 |
Both admin and non-admin users in the administrators group fail identically.
Root Cause Analysis
DSM 7.3.2 changed SYNO.Core.Share.create to require a different encryption/parameter format. Capturing the DSM web UI's XHR request reveals:
- The
shareinfo parameter must be encrypted inside __cIpHeRtExT using RSA+AES hybrid encryption — the Noise protocol encryption from encrypt_params() is rejected
- The
name parameter must be JSON-quoted (API info returns requestFormat: "JSON")
- A new
X-SYNO-HASH header is present in web UI requests (not generated by synology-api)
The web UI request succeeds — the share is created and verifiable via SYNO.Core.Share.get. The library's encrypt_params() produces __cIpHeRtExT output, but DSM 7.3.2 rejects it — possibly due to the missing X-SYNO-HASH integrity header or an encryption scheme change.
Each variable was tested in isolation (auth session type, SynoToken, user privilege, HTTP vs HTTPS). The parameter encryption format is the sole differentiator.
Related Issues
Workaround
SSH: sudo synoshare --add "ShareName" "" "/volume1/ShareName" "" "" "" 1 0
Environment
Description
Share.create_folder()returns error 3300 when called against DSM 7.3.2-86009 Update 3. All read operations (list_folders,get) work correctly — onlycreateis affected.Steps to Reproduce
Error Output
Both HTTPS (plaintext params) and HTTP (Noise protocol encryption) return error 3300:
Both admin and non-admin users in the administrators group fail identically.
Root Cause Analysis
DSM 7.3.2 changed
SYNO.Core.Share.createto require a different encryption/parameter format. Capturing the DSM web UI's XHR request reveals:shareinfoparameter must be encrypted inside__cIpHeRtExTusing RSA+AES hybrid encryption — the Noise protocol encryption fromencrypt_params()is rejectednameparameter must be JSON-quoted (API info returnsrequestFormat: "JSON")X-SYNO-HASHheader is present in web UI requests (not generated by synology-api)The web UI request succeeds — the share is created and verifiable via
SYNO.Core.Share.get. The library'sencrypt_params()produces__cIpHeRtExToutput, but DSM 7.3.2 rejects it — possibly due to the missingX-SYNO-HASHintegrity header or an encryption scheme change.Each variable was tested in isolation (auth session type, SynoToken, user privilege, HTTP vs HTTPS). The parameter encryption format is the sole differentiator.
Related Issues
ik_message. The 97 unreleased commits since v0.8.2 don't touchcore_share.py.Workaround
SSH:
sudo synoshare --add "ShareName" "" "/volume1/ShareName" "" "" "" 1 0