{"name":"@deckyard/synology","description":"A client for the Synology DSM Web API: File Station, virtual machines, users and shares, administration and Container Manager","versions":{"0.1.0":{"version":"0.1.0","kind":"git","url":"https://github.com/deckyard/deck-synology.git","ref":"0.1.0","commit":"cf7f6c48459aa0e7d9b03e48146a969059f4b685","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.25.0"},"capabilities":["net"],"keywords":["synology","dsm","nas","filestation","homelab"],"description":"A client for the Synology DSM Web API: File Station, virtual machines, users and shares, administration and Container Manager","publishedAt":"1793818057","repoId":1446057736,"repoOwnerId":346943577,"repoOwner":"deckyard"}},"readme":"# @deckyard/synology\n\n[![test](https://github.com/deckyard/deck-synology/actions/workflows/test.yml/badge.svg)](https://github.com/deckyard/deck-synology/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-github%20pages-blue)](https://deckyard.github.io/deck-synology/)\n[![release](https://img.shields.io/github/v/release/deckyard/deck-synology)](https://github.com/deckyard/deck-synology/releases/latest)\n\nA client for the Synology DSM Web API, for\n[Jennifer](https://jennifer-lang.dev/) programs: log in (with 2-step\nverification and trusted devices), read the system summary, work with\nFile Station (shared folders, listing, creating, renaming, copying, moving,\ndeleting, upload and download), deploy and run virtual machines in Virtual\nMachine Manager, manage local users, groups, shared folders and their\npermissions, and administer the NAS: certificates, snapshots, health,\nupdates, power, packages, services, scheduled tasks and Hyper Backup.\nContainer Manager deploys Compose projects and runs containers. `call` reaches any other API under `/webapi`,\nand DSM's numeric error codes come back as readable messages.\n\n**[Documentation](https://deckyard.github.io/deck-synology/)**\n\n## Install\n\n```sh\njvc add @deckyard/synology\n```\n\nThis vendors the deck to `vendor/\u003cscope\u003e/synology/`. Without `jvc`, unpack the\n`src/` subtree of a release archive (`\u003cscope\u003e-synology-\u003cversion\u003e.tar.gz`) there.\n\n## Usage\n\n```jennifer\nimport \"@deckyard/synology/\" as synology;\n\ndef c as synology.Client init synology.client(\"nas.example.com\");\n$c = synology.withCaCert($c, fs.readBytes(\"nas.pem\"));\n$c = synology.login($c, \"backup\", \"secret\");\n\nsynology.mkdir($c, \"/backup/2024\", true);\nsynology.upload($c, \"/backup/2024\", \"db.sql.gz\", fs.readBytes(\"db.sql.gz\"), true);\nfor (def f in synology.files($c, \"/backup/2024\")) {\n    io.printf(\"%s %d\\n\", $f.name, $f.size);\n}\n$c = synology.logout($c);\n```\n\n## Requirements\n\nJennifer 0.25.0 or newer, the default `jennifer` binary (not\n`jennifer-tiny`), and the `net` capability. DSM 6.2 or newer; DSM 7 is the\nmain target, and Container Manager needs DSM 7.2.\n\n## Development\n\n```sh\ntools/check-all.sh                   # the full gate, as CI runs it\njennifer test src/synology_test.j    # the test overlay\ntools/check-docs.sh                  # docs against the code\ntools/pack.sh dist                   # build the release archive\n```\n\n## Licence\n\nLGPL-3.0-only, see [LICENSE](LICENSE). Copyright (C) 2026 mplx \u0026lt;mplx@jennifer-lang.dev\u0026gt;.\n\n`tools/check-headers.sh` checks every source file's SPDX header against\n`deck.toml`.\n"}