Zum Inhalt springen
DE

Export, Import & Klonen

POST /api/rooms/:roomId/export (token permission: read) # empty body {} = full room → .gpkg
POST /api/rooms/:roomId/import (token permission: write) # multipart file=@room.gpkg, ≤ 2 GiB
Terminal window
curl -X POST "$API/api/rooms/$ROOM/export" -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" -d '{}' -o room.gpkg
curl -X POST "$API/api/rooms/$ROOM/import" -H "Authorization: Bearer $TOKEN" -F "file=@room.gpkg"

Rumpf und Query des Exports bilden die Optionen der App ab (?include_tiffs=&include_tiles=).

GET /api/rooms/:roomId/export-size (token permission: read)

{ "bytes", "thresholdBytes", "recommended": "sync" | "async" }. Damit entscheiden Sie zwischen dem synchronen Weg und asynchronen Aufträgen (die App wechselt oberhalb von ~2 GiB automatisch).

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 stream

Auftrags-Ids sind an ihren Raum gebunden (der Abruf eines fremden Auftrags → 404). Artefakte verfallen nach 24 Stunden.

Sehr große Räume überschreiten die Importgrenze von 2 GiB und werden deshalb geklont statt erneut hochgeladen — der Server kopiert die zugrunde liegenden Daten an Ort und Stelle.

GET /api/rooms/:roomId/export-manifest (read) # small .json — no bulk data inside
POST /api/rooms/:roomId/clone-jobs (write) → 202 { "jobId": "job-<uuid>" }
GET /api/layers/jobs/:jobId # poll: { stage, progress, layersCloned, ... }

Das Manifest trägt Marker, Symbole, gezeichnete Formen und Ebenenkonfigurationen; umfangreiche Ebenendaten werden nur über die Id des Quellraums referenziert und serverseitig in den Zielraum kopiert. Die kopierten Bytes zählen gegen das Speicherkontingent des Zieleigentümers.