{"name":"@deckyard/koofr","description":"A client for the Koofr cloud storage API: mounts, files, search, public links, receivers and the trash","versions":{"0.1.0":{"version":"0.1.0","kind":"git","url":"https://github.com/deckyard/deck-koofr.git","ref":"0.1.0","commit":"04e4b2ebdccecfd795b63cb291fef04829664dcb","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.26.0"},"capabilities":["net"],"keywords":["koofr","cloud-storage","files","sharing","upload"],"description":"A client for the Koofr cloud storage API: mounts, files, search, public links, receivers and the trash","publishedAt":"1793960691","repoId":1448114455,"repoOwnerId":346943577,"repoOwner":"deckyard"},"0.2.0":{"version":"0.2.0","kind":"git","url":"https://github.com/deckyard/deck-koofr.git","ref":"0.2.0","commit":"cdb71812cd13594448ccb40f87c1e93f8ae91ed0","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.26.0"},"capabilities":["net"],"keywords":["koofr","cloud-storage","files","sharing","upload"],"description":"A client for the Koofr cloud storage API: mounts, files, search, public links, receivers and the trash","publishedAt":"1793997178","repoId":1448114455,"repoOwnerId":346943577,"repoOwner":"deckyard"}},"readme":"# @deckyard/koofr\n\n[![test](https://github.com/deckyard/deck-koofr/actions/workflows/test.yml/badge.svg)](https://github.com/deckyard/deck-koofr/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-github%20pages-blue)](https://deckyard.github.io/deck-koofr/)\n[![release](https://img.shields.io/github/v/release/deckyard/deck-koofr)](https://github.com/deckyard/deck-koofr/releases/latest)\n\nA client for the [Koofr](https://koofr.eu/) cloud storage API, for\n[Jennifer](https://jennifer-lang.dev/) programs: the account and its mounts,\nfiles and folders (list, recursive list, download, upload with overwrite\nconditions, rename, copy and move across mounts), search, public links,\nreceivers (upload links) and the trash. `call` reaches any other endpoint.\nOther providers running the same API work with their own base URL.\n\nPlain file sync can use the interpreter's `webdav` module against\n`https://app.koofr.net/dav/Koofr` with the same app password; this deck\ncovers what WebDAV cannot.\n\n**[Documentation](https://deckyard.github.io/deck-koofr/)**\n\n## Install\n\n```sh\njvc add @deckyard/koofr\n```\n\nThis vendors the deck to `vendor/deckyard/koofr/`. Without `jvc`, unpack the\n`src/` subtree of a release archive (`deckyard-koofr-\u003cversion\u003e.tar.gz`) there.\n\n## Usage\n\n```jennifer\nuse fs;\nuse io;\nuse os;\n\nimport \"@deckyard/koofr/\" as koofr;\n\ndef c as koofr.Client init koofr.client(koofr.DEFAULT_URL);\n$c = koofr.withAppPassword($c, \"me@example.com\", os.getEnv(\"KOOFR_PASSWORD\"));\ndef m as koofr.Mount init koofr.primaryMount($c);\n\nkoofr.mkdirAll($c, $m.id, \"/backups/2026\");\ndef opts as koofr.PutOptions;\n$opts.overwrite = true;\nkoofr.put($c, $m.id, \"/backups/2026/db.sql\", fs.readBytes(\"db.sql\"), $opts);\nio.printf(\"%s\\n\", koofr.createLink($c, $m.id, \"/backups/2026/db.sql\").shortUrl);\n```\n\n## Requirements\n\nJennifer 0.26.0 or newer, the default `jennifer` binary (not\n`jennifer-tiny`), and the `net` capability. Uploads and downloads are held\nin memory: the interpreter's `http` module does not stream yet.\n\n## Development\n\n```sh\ntools/check-all.sh                   # the full gate, as CI runs it\njennifer test src/koofr_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"}