Création d'un Data Bundle
Avant de téléverser des données de capture, vous avez besoin d’un Data Bundle vide lié à un périphérique de capture spécifique. La création suit un flux en deux étapes : obtenir l’arbre d’entrée du périphérique Data Bundle, puis créer le bundle avec le dbuPath entièrement résolu du périphérique feuille que vous avez sélectionné. L’arbre d’entrée est retourné en un seul appel ; parcourez-le localement (par name et children) jusqu’à atteindre une feuille. Les nœuds feuilles portent la chaîne dbuPath que vous transmettez à la création ; les nœuds branche ont dbuPath: null.
Points de terminaison
Section intitulée « Points de terminaison »| Méthode | Chemin | Scope | Objectif |
|---|---|---|---|
GET | /v1/organization/{organizationId}/data-bundle-input-tree | read:bundle | Obtenir l’arbre d’entrée du périphérique |
POST | /v1/nodes/{parentId}/bundle | write:bundle | Créer un Data Bundle |
Étape 1 : obtenir l’arbre d’entrée
Section intitulée « Étape 1 : obtenir l’arbre d’entrée »GET {api_url}/v1/organization/{organizationId}/data-bundle-input-treeAuthorization: Bearer {access_token}La réponse est un arbre imbriqué. Chaque nœud inclut :
| Champ | Signification |
|---|---|
name | Identifiant stable utilisé pour construire les chemins |
label | Nom d’affichage lisible |
isLeaf | true lorsque le nœud est un périphérique de capture sélectionnable |
dbuPath | Chemin de périphérique entièrement résolu sur les nœuds feuilles ; null sur les branches |
children | Nœuds enfants (tableau vide sur les feuilles) |
Exemple (tronqué) :
{ "nodes": [ { "name": "POINTCLOUD", "label": "Point Cloud", "isLeaf": false, "dbuPath": null, "children": [ { "name": "ZF", "label": "ZF", "isLeaf": false, "dbuPath": null, "children": [ { "name": "ZFSLAM", "label": "ZF SLAM", "isLeaf": true, "dbuPath": "POINTCLOUD/ZF/ZFSLAM", "children": [] } ] } ] } ]}Parcourez l’arbre jusqu’à que isLeaf soit true, puis copiez dbuPath (ici POINTCLOUD/ZF/ZFSLAM).
Étape 2 : créer le bundle
Section intitulée « Étape 2 : créer le bundle »Créez le bundle sous un nœud parent sur lequel vous avez la permission (généralement un site ou un dossier). Transmettez le nom du bundle et le dbuPath feuille de l’étape 1.
POST {api_url}/v1/nodes/{parentId}/bundleAuthorization: Bearer {access_token}Content-Type: application/json
{ "name": "ZF capture 2026-06-01", "dbuPath": "POINTCLOUD/ZF/ZFSLAM" }{ "id": "a6f75b3c-f261-4b27-9a2a-9a6cc1234c53", "name": "ZF capture 2026-01-01", "dbuPath": "POINTCLOUD/ZF/ZFSLAM"}Utilisez l’id retourné comme bundleId pour les étapes de téléversement, traitement et téléchargement.
Cas d’erreur
Section intitulée « Cas d’erreur »| Statut | Cause |
|---|---|
400 Bad Request | dbuPath inconnu, non feuille ou non disponible |
403 Forbidden | Aucune permission sur le nœud parent, ou aucun accès au contenu |
Exemple complet
Section intitulée « Exemple complet »import requests
API_URL = "https://<your-regional-api-url>"TOKEN = "<access_token>"ORG_ID = "<organization_id>"PARENT_ID = "<site-or-folder-id>"
headers = {"Authorization": f"Bearer {TOKEN}"}
tree = requests.get( f"{API_URL}/v1/organization/{ORG_ID}/data-bundle-input-tree", headers=headers,).json()
# Walk the tree to find the ZF SLAM leaf (your navigation logic may differ).def find_dbu_path(nodes, *path): node = nodes for segment in path: node = next(n for n in node if n["name"] == segment) node = node["children"] leaf = node[0] assert leaf["isLeaf"] return leaf["dbuPath"]
dbu_path = find_dbu_path(tree["nodes"], "POINTCLOUD", "ZF", "ZFSLAM")
bundle = requests.post( f"{API_URL}/v1/nodes/{PARENT_ID}/bundle", headers=headers, json={"name": "ZF capture 2026-01-01", "dbuPath": dbu_path},).json()
bundle_id = bundle["id"]print(f"Created bundle {bundle_id} for device {bundle['dbuPath']}")Étape suivante
Section intitulée « Étape suivante »Avec un bundleId en main, continuez vers Téléversement de données dans un Data Bundle.