Aller au contenu

Téléchargement des fichiers d'entrée

Une fois les fichiers d’entrée téléversés et finalisés, vous pouvez les télécharger à nouveau via l’API.

Ce guide suppose que vous avez un bundle avec des fichiers d’entrée finalisés et que vous disposez du scope read:bundle.


Le point de terminaison de téléchargement retourne des URL signées prêtes à l’emploi. Téléchargez les octets des fichiers directement depuis le CDN/S3 avec un GET sans en-tête Authorization, selon le même modèle que les téléchargements de fichiers de scan.

sequenceDiagram
  participant Client as Client RCAPI
  participant RCAPI as RCAPI
  participant CDN as CDN / S3

  Client->>RCAPI: GET input-files (page, limit)
  RCAPI-->>Client: items avec urls signées + total
  loop pour chaque item
    Client->>CDN: GET url
    CDN-->>Client: octets du fichier
  end

RCAPI signe le préfixe d’entrée du bundle une fois par requête. L’url de chaque item est cette signature avec un wildcard remplacé par le chemin de stockage du fichier, donc toutes les URL d’une même réponse partagent la même expiration.

MéthodeCheminScopeObjectif
GET/v1/bundles/{bundleId}/input-filesread:bundleLister les URL de téléchargement signées des fichiers d’entrée finalisés

Lister les URL de téléchargement des fichiers d’entrée

Section intitulée « Lister les URL de téléchargement des fichiers d’entrée »
GET {api_url}/v1/bundles/{bundleId}/input-files?page=1&limit=20
Authorization: Bearer {access_token}
ParamètreTypeDescription
pagenumberIndex de page basé sur 1 (défaut 1)
limitnumberTaille de page (défaut 20, maximum 20)
sessionIduuidFacultatif. Limite les résultats aux fichiers d’une session de téléversement

Aucun tri n’est proposé. Les fichiers sont retournés dans un ordre de stockage stable.

Une liste paginée ({ 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
}
ChampSignification
fileNameNom du fichier d’entrée (le chemin substitué dans le préfixe signé)
urlURL de téléchargement signée, prête pour un GET sans en-tête d’authentification
sessionIdSession de téléversement à laquelle le fichier appartient
totalNombre total de fichiers d’entrée finalisés sur toutes les pages

Pour chaque item, effectuez un GET directement sur l’url. Aucun jeton bearer n’est requis ; la signature est intégrée dans la chaîne de requête.

import requests
response = requests.get(item["url"])
response.raise_for_status()
with open(local_path, "wb") as handle:
handle.write(response.content)

Toutes les URL d’une réponse partagent une seule expiration de signature (environ 24 heures, cohérent avec les autres liens signés de l’API). Si un téléchargement retourne 403 Forbidden, l’URL a expiré. Demandez une nouvelle page depuis le point de terminaison de liste et réessayez.

Lorsque total dépasse limit, parcourez les résultats page par page :

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 = 1
while 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 += 1
Cas d’utilisationNotes
ArchivageCopier les captures brutes dans votre propre stockage après le téléversement
RetraitementTélécharger les entrées localement, puis les téléverser dans un nouveau bundle
Audit / vérificationConfirmer quels fichiers ont atteint le bundle avant le traitement
Tests d’intégrationBoucle complète téléversement et téléchargement dans des pipelines CI

Ce point de terminaison retourne uniquement les fichiers d’entrée (ce que vous avez téléversé). Les sorties traitées (HLODs, nuages de points standardisés, etc.) sont exposées comme liens signés des composants du bundle sur GET /v1/site/{siteId}/bundles/{bundleId}. Consultez Récupération des sorties traitées.

StatutCause
403 ForbiddenScope read:bundle manquant ou aucune permission de lecture sur le bundle
404 Not FoundbundleId inconnu

Un tableau items vide avec total: 0 signifie que le bundle n’a pas encore de fichiers d’entrée finalisés. Complétez d’abord une session de téléversement ; consultez Téléversement de données dans un Data Bundle.