Esportazione, importazione e clonazione
Esportazione / importazione sincrona
Sezione intitolata “Esportazione / importazione sincrona”POST /api/rooms/:roomId/export (token permission: read) # empty body {} = full room → .gpkgPOST /api/rooms/:roomId/import (token permission: write) # multipart file=@room.gpkg, ≤ 2 GiBcurl -X POST "$API/api/rooms/$ROOM/export" -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" -d '{}' -o room.gpkgcurl -X POST "$API/api/rooms/$ROOM/import" -H "Authorization: Bearer $TOKEN" -F "file=@room.gpkg"Il corpo e la query dell’esportazione rispecchiano le opzioni dell’app (?include_tiffs=&include_tiles=).
Sonda delle dimensioni
Sezione intitolata “Sonda delle dimensioni”GET /api/rooms/:roomId/export-size (token permission: read)→ { "bytes", "thresholdBytes", "recommended": "sync" | "async" }. Usala per scegliere fra la via
sincrona e le attività asincrone (l’app passa automaticamente oltre i ~2 GiB).
Attività di esportazione asincrone
Sezione intitolata “Attività di esportazione asincrone”POST /api/rooms/:roomId/export-jobs (read) → 202 { "jobId": "<uuid>" }GET /api/rooms/:roomId/export-jobs/:jobId (read) → { status, bytes, error?, startedAt, finishedAt }GET /api/rooms/:roomId/export-jobs/:jobId/artifact (read) → .gpkg streamGli id delle attività sono legati alla stanza (interrogare l’attività di un’altra stanza → 404). Gli artefatti scadono dopo 24 ore.
Clonare una stanza grande (manifesto di riconnessione)
Sezione intitolata “Clonare una stanza grande (manifesto di riconnessione)”Le stanze molto grandi superano il limite di importazione di 2 GiB, quindi vengono clonate invece che ricaricate — il server copia i dati sottostanti sul posto.
GET /api/rooms/:roomId/export-manifest (read) # small .json — no bulk data insidePOST /api/rooms/:roomId/clone-jobs (write) → 202 { "jobId": "job-<uuid>" }GET /api/layers/jobs/:jobId # poll: { stage, progress, layersCloned, ... }Il manifesto contiene segnaposto, icone, forme disegnate e configurazioni dei livelli; i dati voluminosi dei livelli sono referenziati solo tramite l’id della stanza di origine e copiati sul server nella stanza di destinazione. I byte copiati vengono conteggiati sulla quota di spazio del proprietario di destinazione.

