Dazr Files API: dokumentation för utvecklare

Snabbstart

  1. Registrera din app och aktivera Dazr Files API. Registrera din app, eller använd en du redan har, i Dazr Identity-konsolen: samma ställe som för Logga in med Dazr Identity och Dazr Sign API, med samma klient-id och hemlighet. Välj Aktivera Dazr Files API på appens sida. För obevakade säkerhetskopior måste det vara en webbserverapp (med en klienthemlighet).
  2. Bli godkänd. Ge organisationen ditt klient-id. En ägare eller administratör öppnar Dazr Identity → Organisationer → organisationen → Anslutna appar för Files, anger klient-id:t och väljer vad din app får läsa: alla delade filer eller valda mappar med allt i dem. De kan också begränsa appen till angivna nät (IP-intervall).
  3. Hämta en token. Din server ber om en token med grant_type=client_credentials, organisationens id som org och ditt klient-id och din hemlighet (HTTP Basic eller formulärets body). Bara appar med en klienthemlighet kan göra det.
  4. Anropa API:t. Skicka åtkomsttoken som Authorization: Bearer. Den gäller i 10 minuter och det finns ingen refresh-token: be om en ny när den går ut.
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

Organisationsåtkomst för säkerhetskopior

Det finns två vägar in. En ägare eller administratör i en organisation godkänner din app för organisationens delade filer, och din server får då token utan en person (bäst för obevakade säkerhetskopior). Eller så tillåter en person din app med scopet files.read, och appen läser personens egna filer.

En organisation som inte har godkänt din app, en som har återkallat den och en som inte finns svarar alla invalid_grant. Administratörerna ser när appen senast användes och varje fil den har laddat ned, och kan när som helst ändra dess mappar eller återkalla den. Ett återkallat godkännande slutar gälla vid nästa begäran: redan utfärdade token slutar fungera direkt, och det gör även nedladdningslänkar som redan lämnats ut. Medlemmarnas egna filer ingår aldrig i en organisations godkännande.

ParameterBetydelse
grant_typeclient_credentials
orgOrganisationens id, som administratörerna ser under Anslutna appar för Files.
scopefiles.read (standard och det enda scopet).
Client authenticationDitt klient-id och din nuvarande klienthemlighet, med HTTP Basic (client_secret_basic) eller i formulärets body (client_secret_post). En tidigare hemlighet som finns kvar efter en överlåtelse godtas inte.

En persons egna filer

Be om openid files.read (och offline_access för en refresh-token) i det vanliga authorization code-flödet med PKCE. Personen ser på samtyckesskärmen att din app får se och ladda ned personens filer. Token når personens egna filer, och en organisations delade filer bara när organisationen också har godkänt din app och personen är en medlem som får öppna dem, med samma mappar. När personen tar bort din app under Anslutna appar slutar dess token att fungera.

Referens

Bas-URL https://suite.dazr.eu/api/files/v1. Alla endpoints är GET (och HEAD); alla andra metoder svarar 405. Fel är JSON: { "error": { "code", "message" } }. Listor tar limit (1 till 1000, standard 200) och returnerar next_cursor så länge det finns mer.

FörfråganVad den returnerar
GET /spacesDe utrymmen din token når: me för en persons egna filer och organisationer efter deras id.
GET /spaces/{space}Ett utrymme.
GET /spaces/{space}/folders/root/childrenMapparna och sedan filerna överst i det som din token når. Använd en mapps id i stället för root för en mapp.
GET /spaces/{space}/folders/{id}En mapp.
GET /spaces/{space}/files/{id}En fil: name, path, parent_id, size, mime, version, etag, created_at, modified_at och trashed_at.
GET /spaces/{space}/files/{id}/versionsDe sparade versionerna av en fil, nyast först.
GET /spaces/{space}/files/{id}/contentEn omdirigering (302) till en nedladdningslänk på files.dazr.eu som fungerar i 5 minuter och stöder byteintervall. Lägg till version= för en tidigare version, eller redirect=false för att få länken som JSON.
GET /spaces/{space}/trashFiler i papperskorgen, som metadata. De kan inte laddas ned förrän någon återställer dem.
GET /spaces/{space}/changesVad som har ändrats sedan en cursor, för inkrementella säkerhetskopior (nedan).

Varje begäran kräver scopet files.read. Frågeparametrar:

ParameterBetydelse
limitObjekt per sida för children, trash och changes: 1 till 1000 (standard 200, för changes 500).
cursorFöregående sidas next_cursor, eller för changes den returnerade cursor.
versionFör content: ett versionsnummer från versions. Utan det: den aktuella versionen.
redirectFör content: false returnerar { "url", "expires_in" } i stället för en 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

Följ omdirigeringen (curl -L): länken på files.dazr.eu behöver ingen Authorization-header. En fil som ännu inte finns i Files-gatewayen strömmas direkt i stället för att omdirigeras.

Kontrollsummor: Dazr Files sparar ingen hash av varje fils innehåll, så sha256 är alltid null. etag ändras varje gång innehållet ändras (en ny version). Beräkna en egen hash medan du laddar ned om du behöver en. Filer lagras krypterade (AES-256-GCM, med en nyckel per utrymme som Dazr förvaltar) och Dazr dekrypterar dem när du laddar ned dem över TLS. Det här är inte end-to-end-kryptering.

Inkrementella säkerhetskopior

Anropa changes en gång utan cursor: alla mappar och filer kommer tillbaka som created, med en cursor. Spara cursorn och skicka den nästa gång som cursor=. Du får det som har ändrats sedan dess: created, updated (nytt innehåll), moved (bytt namn eller flyttad till en annan mapp), trashed, restored och deleted (borta för gott, eller inte längre i mapparna som appen får läsa). Varje ändring har id, item_type och aktuellt item (null när den raderats). Mappar kommer före filer, föräldrar före sina barn. Så länge has_more är true anropar du igen med den nya cursorn. Om inget har ändrats får du samma cursor tillbaka. En cursor fungerar i 90 dagar, bara för din app och det utrymmet; en utgången svarar 410, och du börjar om utan cursor. Bara appens 5 senaste cursorer för ett utrymme förblir giltiga.

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 }

Fel och gränser

Fel har en HTTP-status och en body som { "error": { "code": "not_found", "message": "..." } }. Allt som din token inte når svarar 404, precis som något som inte finns.

StatusKoder
400invalid_limit, invalid_cursor (en cursor från en annan app eller ett annat utrymme)
401unauthenticated, invalid_token (utgången eller återkallad, godkännandet eller personens samtycke har tagits bort, eller Dazr Files API har inaktiverats för din app)
403insufficient_scope, files_api_disabled, network_not_allowed (organisationen har angett nät och begäran kommer någon annanstans ifrån)
404space_not_found, folder_not_found, not_found, version_not_found, unknown_endpoint
405method_not_allowed: alla metoder utom GET, HEAD och OPTIONS
410cursor_expired: börja om utan cursor
429rate_limited, med ett Retry-After-huvud
503not_available, storage_unavailable: försök igen senare

Token-endpointen svarar med OAuth-fel: invalid_client (fel klient-id eller hemlighet, eller en app utan klienthemlighet), unauthorized_client (Dazr Files API är inte aktiverat för din app), invalid_scope och invalid_grant (inget godkännande från organisationen, eller inte från dess angivna nät).

VadGräns
API-anrop600 per minut per godkännande (eller per person och app), 6 000 per minut per app, 1 200 per minut per IP-adress
Nedladdningar300 per minut per godkännande via API:t, 600 per minut via WebDAV
changes120 per timme per utrymme utan sidcursor; följande sidor begränsas inte separat
WebDAV-anrop1 200 per minut per godkännande
/oauth/token600 förfrågningar per minut per IP-adress och 300 per minut per app

Varje nedladdning loggas för organisationens administratörer med appens namn, filen, tiden och en del av IP-adressen: de senaste 5 000, i upp till 180 dagar. Samma fil som laddas ned igen inom 10 minuter räknas en gång. Organisationens Files-aktivitet visar en rad per dag för din app. Nedladdningar från en persons egna filer visas under personens Anslutna appar.

WebDAV

För verktyg för säkerhetskopiering som använder WebDAV skapar en administratör i organisationen en WebDAV-inloggning för din app under Anslutna appar för Files. Lösenordet visas en gång, sparas bara som hash och är aldrig någons Dazr-lösenord. Inloggningen följer godkännandet: samma mappar, nät och gränser, och den slutar fungera när godkännandet återkallas.

InställningVärde
Serverhttps://files.dazr.eu/dav/
InloggningHTTP Basic med användarnamnet (dzw_…) och lösenordet från administratören.
MetoderOPTIONS, PROPFIND med Depth: 0 eller 1, GET och HEAD med byteintervall. Depth: infinity avvisas. Alla skrivningar svarar 403 eller 405.

Mapp- och filnamn visas som de är i Dazr Files. När två objekt i en mapp har samma namn (oavsett versaler) behåller det äldsta namnet och de andra får sitt id inom parentes före filändelsen, så att varje objekt får en egen sökväg. En mapp med fler än 10 000 objekt kan inte listas över WebDAV; använd API:t för den. Efter 10 misslyckade inloggningar från en IP-adress inom 15 minuter får den adressen vänta i 15 minuter.

rclone

  1. Kör rclone config, välj n för en ny remote, döp den till dazr och välj lagringstypen webdav.
  2. URL: https://files.dazr.eu/dav/. Vendor: other. User: användarnamnet (dzw_…). Password: välj att skriva det själv och klistra in lösenordet.
  3. Lämna bearer token tom och spara. Kontrollera med rclone lsd dazr: och säkerhetskopiera sedan.
# ~/.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 jämför storlek och ändringstid. Använd copy i stället för sync för att behålla filer i säkerhetskopian som har raderats i Dazr Files.

Synology Cloud Sync

  1. Öppna Cloud Sync på NAS:en, lägg till en molnleverantör och välj WebDAV.
  2. Serveradress: https://files.dazr.eu/dav/. Användarnamn och lösenord: WebDAV-inloggningen från administratören.
  3. Välj en lokal mapp, fjärrmappen / (eller en mapp) och synkroniseringsriktningen Download remote changes only.

Cloud Sync med WebDAV, synkroniseringsriktning ”Download remote changes only”. Hyper Backup skriver säkerhetskopior till WebDAV men kan inte läsa därifrån.