API Dazr Files: dokumentace pro vývojáře

Rychlý start

  1. Zaregistrujte aplikaci a zapněte API Dazr Files. Zaregistrujte aplikaci, nebo použijte existující, v konzoli Dazr Identity: na stejném místě jako přihlášení přes Dazr Identity a API Dazr Sign, se stejným Client ID a tajným klíčem. Na stránce aplikace zvolte Zapnout API Dazr Files. Pro zálohy bez obsluhy musí jít o aplikaci webového serveru (s tajným klíčem klienta).
  2. Získejte schválení. Dejte organizaci své Client ID. Vlastník nebo administrátor otevře Dazr Identity → Organizace → organizace → Propojené aplikace pro Files, zadá Client ID a vybere, co smí vaše aplikace číst: všechny sdílené soubory, nebo vybrané složky se vším, co obsahují. Může také aplikaci omezit na uvedené sítě (rozsahy IP).
  3. Získejte token. Váš server si vyžádá token s grant_type=client_credentials, id organizace jako org a vaším Client ID a tajným klíčem (HTTP Basic nebo tělo formuláře). Mohou to jen aplikace s tajným klíčem klienta.
  4. Zavolejte API. Posílejte přístupový token jako Authorization: Bearer. Platí 10 minut a refresh token neexistuje: když vyprší, vyžádejte si nový.
curl -u "$DAZR_CLIENT_ID:$DAZR_CLIENT_SECRET" https://identity.dazr.eu/oauth/token \
  -d grant_type=client_credentials -d scope=files.read -d org=org_3k9x2m0q8w1v5t7a

{ "access_token": "eyJhbGciOiJFUzI1NiIs...", "token_type": "Bearer", "expires_in": 600, "scope": "files.read" }

curl -H "Authorization: Bearer $TOKEN" https://suite.dazr.eu/api/files/v1/spaces

Přístup organizace pro zálohy

Jsou dvě cesty. Vlastník nebo administrátor organizace schválí vaši aplikaci pro sdílené soubory organizace a váš server pak dostává tokeny bez osoby (nejlepší pro zálohy bez obsluhy). Nebo osoba povolí vaší aplikaci scope files.read a aplikace čte vlastní soubory této osoby.

Organizace, která vaši aplikaci neschválila, organizace, která schválení odvolala, i organizace, která neexistuje, odpoví stejně: invalid_grant. Administrátoři vidí, kdy byla aplikace naposledy použita, a každý soubor, který stáhla, a mohou kdykoli změnit její složky nebo ji odvolat. Odvolané schválení skončí při dalším požadavku: již vydané tokeny okamžitě přestanou fungovat, stejně jako již vydané odkazy ke stažení. Vlastní soubory členů nejsou nikdy součástí schválení organizace.

ParametrVýznam
grant_typeclient_credentials
orgid organizace, které administrátoři vidí v Propojených aplikacích pro Files.
scopefiles.read (výchozí a jediný scope).
Client authenticationVaše Client ID a aktuální tajný klíč klienta, přes HTTP Basic (client_secret_basic) nebo v těle formuláře (client_secret_post). Předchozí tajný klíč ponechaný po převodu se nepřijímá.

Vlastní soubory osoby

Požádejte o openid files.read (a offline_access pro refresh token) v obvyklém toku authorization code s PKCE. Osoba na obrazovce souhlasu uvidí, že vaše aplikace smí její soubory zobrazit a stáhnout. Token dosáhne na její vlastní soubory a na sdílené soubory organizace jen tehdy, když vaši aplikaci schválila i tato organizace a osoba je členem, který je smí otevřít, se stejnými složkami. Když osoba aplikaci odebere v Propojených aplikacích, tokeny přestanou fungovat.

Reference

Základní URL https://suite.dazr.eu/api/files/v1. Každý endpoint je GET (a HEAD); jakákoli jiná metoda odpoví 405. Chyby jsou v JSON: { "error": { "code", "message" } }. Seznamy berou limit (1 až 1000, výchozí 200) a vracejí next_cursor, dokud je co načíst.

PožadavekCo vrací
GET /spacesProstory, na které token dosáhne: me pro vlastní soubory osoby a organizace podle jejich id.
GET /spaces/{space}Jeden prostor.
GET /spaces/{space}/folders/root/childrenSložky a pak soubory na nejvyšší úrovni toho, na co token dosáhne. Pro složku použijte její id místo root.
GET /spaces/{space}/folders/{id}Jedna složka.
GET /spaces/{space}/files/{id}Jeden soubor: name, path, parent_id, size, mime, version, etag, created_at, modified_at a trashed_at.
GET /spaces/{space}/files/{id}/versionsUchované verze souboru, od nejnovější.
GET /spaces/{space}/files/{id}/contentPřesměrování (302) na odkaz ke stažení na files.dazr.eu, který funguje 5 minut a podporuje rozsahy bajtů. Přidejte version= pro starší verzi nebo redirect=false, abyste dostali odkaz jako JSON.
GET /spaces/{space}/trashSoubory v koši, jako metadata. Stáhnout je nelze, dokud je někdo neobnoví.
GET /spaces/{space}/changesCo se změnilo od kurzoru, pro přírůstkové zálohy (níže).

Každý požadavek potřebuje scope files.read. Parametry dotazu:

ParametrVýznam
limitPoložky na stránku pro children, trash a changes: 1 až 1000 (výchozí 200, pro changes 500).
cursornext_cursor předchozí stránky, nebo u changes vrácený cursor.
versionPro content: číslo verze z versions. Bez něj aktuální verze.
redirectPro content: false vrátí { "url", "expires_in" } místo 302.
GET /spaces
{ "spaces": [ { "id": "org_3k9x2m0q8w1v5t7a", "type": "organisation", "name": "Bakkerij Jansen", "folders": "chosen" } ] }

GET /spaces/org_3k9x2m0q8w1v5t7a/folders/root/children?limit=2
{ "items": [
    { "id": "Hk2mQ9xP4aL1", "type": "folder", "name": "Finance", "parent_id": null, "path": "/Finance",
      "created_at": "2026-09-01T08:12:40.000Z" },
    { "id": "p3RtY7uW0zQe", "type": "file", "name": "Budget 2027.xlsx", "parent_id": "Hk2mQ9xP4aL1",
      "path": "/Finance/Budget 2027.xlsx", "size": 48213,
      "mime": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "version": 3, "version_count": 3,
      "etag": "\"p3RtY7uW0zQe.3.48213\"", "sha256": null, "created_at": "2026-09-02T10:00:00.000Z",
      "modified_at": "2026-10-14T16:31:09.000Z", "trashed_at": null } ],
  "next_cursor": "o.2" }

GET /spaces/org_3k9x2m0q8w1v5t7a/files/p3RtY7uW0zQe/versions
{ "versions": [ { "version": 3, "size": 48213, "mime": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                  "created_at": "2026-10-14T16:31:09.000Z", "current": true, "restored_from": null } ] }

GET /spaces/org_3k9x2m0q8w1v5t7a/files/p3RtY7uW0zQe/content
302 Found
Location: https://files.dazr.eu/v1/file?t=g1.…

curl -L -o "Budget 2027.xlsx" -H "Authorization: Bearer $TOKEN" \
  https://suite.dazr.eu/api/files/v1/spaces/org_3k9x2m0q8w1v5t7a/files/p3RtY7uW0zQe/content

Následujte přesměrování (curl -L): odkaz na files.dazr.eu nepotřebuje hlavičku Authorization. Soubor, který ještě není v bráně Files, se streamuje přímo místo přesměrování.

Kontrolní součty: Dazr Files neukládá hash obsahu jednotlivých souborů, proto je sha256 vždy null. etag se změní pokaždé, když se změní obsah (nová verze). Pokud hash potřebujete, spočítejte si ho při stahování. Soubory jsou uloženy šifrovaně (AES-256-GCM, s klíčem pro každý prostor, který spravuje Dazr) a Dazr je dešifruje, když je stahujete přes TLS. Nejde o end-to-end šifrování.

Přírůstkové zálohy

Zavolejte changes poprvé bez kurzoru: každá složka a soubor se vrátí jako created, spolu s cursor. Kurzor si uložte a příště ho pošlete jako cursor=. Dostanete, co se mezitím změnilo: created, updated (nový obsah), moved (přejmenováno nebo přesunuto do jiné složky), trashed, restored a deleted (trvale smazáno, nebo už mimo složky, které aplikace smí číst). Každá změna má id, item_type a aktuální item (null u smazaných). Složky jsou před soubory, rodiče před dětmi. Dokud je has_more true, volejte znovu s novým kurzorem. Když se nic nezměnilo, dostanete stejný kurzor. Kurzor platí 90 dní, jen pro vaši aplikaci a daný prostor; vypršelý odpoví 410 a začnete znovu bez kurzoru. Platných zůstává jen 5 nejnovějších kurzorů vaší aplikace pro daný prostor.

GET /spaces/org_3k9x2m0q8w1v5t7a/changes?cursor=dc1.ds_…
{ "changes": [
    { "type": "updated", "id": "p3RtY7uW0zQe", "item_type": "file",
      "item": { "id": "p3RtY7uW0zQe", "type": "file", "name": "Budget 2027.xlsx", "version": 4, … } },
    { "type": "deleted", "id": "Zx81LmQa2bNc", "item_type": "file", "item": null } ],
  "cursor": "dc1.ds_…",
  "has_more": false }

Chyby a limity

Chyby mají stav HTTP a tělo jako { "error": { "code": "not_found", "message": "..." } }. Vše, na co token nedosáhne, odpoví 404, stejně jako něco, co neexistuje.

StavKódy
400invalid_limit, invalid_cursor (kurzor jiné aplikace nebo prostoru)
401unauthenticated, invalid_token (vypršel nebo byl odvolán, schválení nebo souhlas osoby byl odebrán, nebo bylo pro aplikaci vypnuto API Dazr Files)
403insufficient_scope, files_api_disabled, network_not_allowed (organizace uvedla sítě a tento požadavek přichází odjinud)
404space_not_found, folder_not_found, not_found, version_not_found, unknown_endpoint
405method_not_allowed: jakákoli metoda kromě GET, HEAD a OPTIONS
410cursor_expired: začněte znovu bez kurzoru
429rate_limited, s hlavičkou Retry-After
503not_available, storage_unavailable: zkuste to později

Endpoint tokenu odpovídá chybami OAuth: invalid_client (nesprávné Client ID nebo tajný klíč, nebo aplikace bez tajného klíče klienta), unauthorized_client (API Dazr Files není pro aplikaci zapnuté), invalid_scope a invalid_grant (žádné schválení od této organizace, nebo ne z jejích uvedených sítí).

CoLimit
Požadavky API600 za minutu na schválení (nebo na osobu a aplikaci), 6 000 za minutu na aplikaci, 1 200 za minutu na IP adresu
Ke stažení300 za minutu na schválení přes API, 600 za minutu přes WebDAV
changes120 za hodinu na prostor bez kurzoru stránky; další stránky se zvlášť neomezují
Požadavky WebDAV1 200 za minutu na schválení
/oauth/token600 požadavků za minutu na IP adresu a 300 za minutu na aplikaci

Každé stažení se pro administrátory organizace zaznamená s názvem aplikace, souborem, časem a částí IP adresy: posledních 5 000, až 180 dní. Stejný soubor stažený znovu do 10 minut se počítá jednou. Aktivita Files organizace ukazuje pro vaši aplikaci jeden řádek denně. Stažení z vlastních souborů osoby se zobrazí v jejích Propojených aplikacích.

WebDAV

Pro zálohovací nástroje, které umí WebDAV, vytvoří administrátor organizace pro vaši aplikaci přihlášení WebDAV v Propojených aplikacích pro Files. Heslo se zobrazí jednou, ukládá se jen jako hash a nikdy to není něčí heslo k Dazr. Přihlášení se řídí schválením: stejné složky, sítě a limity, a skončí, když je schválení odvoláno.

NastaveníHodnota
Serverhttps://files.dazr.eu/dav/
PřihlášeníHTTP Basic s uživatelským jménem (dzw_…) a heslem od administrátora.
MetodyOPTIONS, PROPFIND s Depth: 0 nebo 1, GET a HEAD s rozsahy bajtů. Depth: infinity se odmítá. Každý zápis odpoví 403 nebo 405.

Názvy složek a souborů se zobrazují tak, jak jsou v Dazr Files. Když mají dvě položky ve složce stejný název (bez ohledu na velikost písmen), starší si ho ponechá a ostatní dostanou své id v závorce před příponou, aby měla každá položka vlastní cestu. Složku s více než 10 000 položkami nelze přes WebDAV vypsat; použijte pro ni API. Po 10 neúspěšných přihlášeních z jedné IP adresy během 15 minut tato adresa 15 minut čeká.

rclone

  1. Spusťte rclone config, zvolte n pro nový remote, pojmenujte ho dazr a zvolte typ úložiště webdav.
  2. URL: https://files.dazr.eu/dav/. Vendor: other. User: uživatelské jméno (dzw_…). Password: zvolte vlastní zadání a vložte heslo.
  3. Bearer token nechte prázdný a uložte. Ověřte pomocí rclone lsd dazr: a pak zálohujte.
# ~/.config/rclone/rclone.conf (rclone obscure <password> gives the pass value)
[dazr]
type = webdav
url = https://files.dazr.eu/dav/
vendor = other
user = dzw_0123456789abcdef0123
pass = <obscured password>

rclone lsd dazr:
rclone sync dazr: /backup/dazr --transfers 4

rclone porovnává velikost a čas změny. Použijte copy místo sync, aby v záloze zůstaly soubory smazané v Dazr Files.

Synology Cloud Sync

  1. Otevřete na NAS Cloud Sync, přidejte poskytovatele cloudu a zvolte WebDAV.
  2. Adresa serveru: https://files.dazr.eu/dav/. Uživatelské jméno a heslo: přihlášení WebDAV od administrátora.
  3. Zvolte místní složku, vzdálenou složku / (nebo jednu složku) a směr synchronizace Download remote changes only.

Cloud Sync s WebDAV, směr synchronizace „Download remote changes only“. Hyper Backup zálohy na WebDAV zapisuje, ale číst z něj neumí.