Aller au contenu

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.


MéthodeCheminScopeObjectif
GET/v1/organization/{organizationId}/data-bundle-input-treeread:bundleObtenir l’arbre d’entrée du périphérique
POST/v1/nodes/{parentId}/bundlewrite:bundleCréer un Data Bundle
GET {api_url}/v1/organization/{organizationId}/data-bundle-input-tree
Authorization: Bearer {access_token}

La réponse est un arbre imbriqué. Chaque nœud inclut :

ChampSignification
nameIdentifiant stable utilisé pour construire les chemins
labelNom d’affichage lisible
isLeaftrue lorsque le nœud est un périphérique de capture sélectionnable
dbuPathChemin de périphérique entièrement résolu sur les nœuds feuilles ; null sur les branches
childrenNœ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).

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}/bundle
Authorization: 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.

StatutCause
400 Bad RequestdbuPath inconnu, non feuille ou non disponible
403 ForbiddenAucune permission sur le nœud parent, ou aucun accès au contenu
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']}")

Avec un bundleId en main, continuez vers Téléversement de données dans un Data Bundle.