Eingabedateien herunterladen
Sobald Eingabedateien hochgeladen und finalisiert sind, können Sie sie erneut über die API herunterladen.
Es wird vorausgesetzt, dass Sie ein Bundle mit finalisierten Eingabedateien haben und den Scope read:bundle besitzen.
Funktionsweise
Abschnitt betitelt „Funktionsweise“Der Download-Endpunkt liefert sofort verwendbare signierte URLs. Laden Sie Dateibytes direkt von CDN/S3 herunter, ohne Authorization-Header beim GET, dasselbe Muster wie bei Scan-Datei-Downloads.
sequenceDiagram
participant Client as RCAPI client
participant RCAPI as RCAPI
participant CDN as CDN / S3
Client->>RCAPI: GET input-files (page, limit)
RCAPI-->>Client: items with signed urls + total
loop for each item
Client->>CDN: GET url
CDN-->>Client: file bytes
end
RCAPI signiert das Eingabe-Präfix des Bundles einmal pro Anfrage. Die url jedes Elements ist diese Signatur mit einem Platzhalter, der durch den Speicherpfad der Datei ersetzt wird, sodass alle URLs in einer einzelnen Antwort dasselbe Ablaufdatum teilen.
Endpunkt
Abschnitt betitelt „Endpunkt“| Method | Path | Scope | Purpose |
|---|---|---|---|
GET | /v1/bundles/{bundleId}/input-files | read:bundle | Signierte Download-URLs für finalisierte Eingabedateien auflisten |
Download-URLs für Eingabedateien auflisten
Abschnitt betitelt „Download-URLs für Eingabedateien auflisten“GET {api_url}/v1/bundles/{bundleId}/input-files?page=1&limit=20Authorization: Bearer {access_token}Query-Parameter
Abschnitt betitelt „Query-Parameter“| Parameter | Type | Description |
|---|---|---|
page | number | 1-basierter Seitenindex (Standard 1) |
limit | number | Seitengröße (Standard 20, Maximum 20) |
sessionId | uuid | Optional. Ergebnisse auf Dateien aus einer Upload-Session beschränken |
Es wird keine Sortierung angeboten. Dateien werden in einer stabilen Speicherreihenfolge zurückgegeben.
Antwort
Abschnitt betitelt „Antwort“Eine paginierte Liste ({ items, total }):
{ "items": [ { "fileName": "scan.las", "url": "https://cdn…/bundles/…/scan.las?X-Amz-…", "sessionId": "6ebf0fe5-4428-4b26-a7e4-e3274980123b" }, { "fileName": "panorama/2024-07-scan-idx40.jpg", "url": "https://cdn…/bundles/…/panorama/2024-07-scan-idx40.jpg?X-Amz-…", "sessionId": "6ebf0fe5-4428-4b26-a7e4-e3274980123b" } ], "total": 28}| Field | Meaning |
|---|---|
fileName | Name der Eingabedatei (der Pfad, der in das signierte Präfix eingesetzt wird) |
url | Signierte Download-URL, bereit für GET ohne Auth-Header |
sessionId | Upload-Session, zu der die Datei gehört |
total | Gesamtzahl finalisierter Eingabedateien über alle Seiten |
Bytes herunterladen
Abschnitt betitelt „Bytes herunterladen“Für jedes Element führen Sie GET direkt auf die url aus. Kein Bearer-Token erforderlich; die Signatur ist in der Query-Zeichenkette eingebettet.
import requests
response = requests.get(item["url"])response.raise_for_status()
with open(local_path, "wb") as handle: handle.write(response.content)Abgelaufene URLs
Abschnitt betitelt „Abgelaufene URLs“Alle URLs in einer Antwort teilen ein einziges Signatur-Ablaufdatum (etwa 24 Stunden, konsistent mit anderen signierten Links in der API). Wenn ein Download 403 Forbidden zurückgibt, ist die URL abgelaufen. Fordern Sie eine neue Seite vom Listen-Endpunkt an und versuchen Sie es erneut.
Paginierung großer Bundles
Abschnitt betitelt „Paginierung großer Bundles“Wenn total limit überschreitet, blättern Sie durch die Ergebnisse:
import requests
API_URL = "https://<your-regional-api-url>"TOKEN = "<access_token>"BUNDLE_ID = "<bundleId>"LIMIT = 20
headers = {"Authorization": f"Bearer {TOKEN}"}base = f"{API_URL}/v1/bundles/{BUNDLE_ID}/input-files"
page = 1while True: listing = requests.get( base, headers=headers, params={"page": page, "limit": LIMIT} ).json()
for item in listing["items"]: local_name = item["fileName"].replace("/", "_") data = requests.get(item["url"]) data.raise_for_status() with open(local_name, "wb") as handle: handle.write(data.content) print(f"Downloaded {item['fileName']}")
if page * LIMIT >= listing["total"]: break page += 1Wann dieser Endpunkt sinnvoll ist
Abschnitt betitelt „Wann dieser Endpunkt sinnvoll ist“| Use case | Notes |
|---|---|
| Archivierung | Roh-Erfassungen nach dem Upload in Ihren eigenen Speicher kopieren |
| Erneute Verarbeitung | Eingaben lokal herunterladen, dann in ein neues Bundle hochladen |
| Audit / Verifizierung | Bestätigen, welche Dateien vor der Verarbeitung im Bundle gelandet sind |
| Integrationstests | Upload und Download in CI-Pipelines roundtrippen |
Dieser Endpunkt liefert nur Eingabedateien (was Sie hochgeladen haben). Verarbeitete Ausgaben (HLODs, standardisierte Punktwolken und so weiter) werden als signierte Links der Bundle-Komponenten auf GET /v1/site/{siteId}/bundles/{bundleId} bereitgestellt. Siehe Verarbeitete Ausgaben abrufen.
Fehlerfälle
Abschnitt betitelt „Fehlerfälle“| Status | Cause |
|---|---|
403 Forbidden | Scope read:bundle fehlt oder keine Leseberechtigung auf dem Bundle |
404 Not Found | Unbekannte bundleId |
Ein leeres items-Array mit total: 0 bedeutet, dass das Bundle noch keine finalisierten Eingabedateien hat. Schließen Sie zuerst eine Upload-Session ab; siehe Daten in ein Data Bundle hochladen.