Een data bundle maken
Voordat u opnamegegevens uploadt, hebt u een lege data bundle nodig die is gekoppeld aan een specifiek opnameapparaat. Het maken is een flow in twee stappen: haal de apparaatinvoerboom van de data bundle op en maak vervolgens de bundle met de volledig opgeloste dbuPath van het leaf-apparaat dat u hebt geselecteerd. De invoerboom wordt in één aanroep geretourneerd; doorloop deze lokaal (op name en children) totdat u een leaf bereikt. Leaf-nodes bevatten de dbuPath-string die u bij het maken meegeeft; branch-nodes hebben dbuPath: null.
Endpoints
Section titled “Endpoints”| Methode | Pad | Scope | Doel |
|---|---|---|---|
GET | /v1/organization/{organizationId}/data-bundle-input-tree | read:bundle | De apparaatinvoerboom ophalen |
POST | /v1/nodes/{parentId}/bundle | write:bundle | Een data bundle maken |
Stap 1: de invoerboom ophalen
Section titled “Stap 1: de invoerboom ophalen”GET {api_url}/v1/organization/{organizationId}/data-bundle-input-treeAuthorization: Bearer {access_token}De response is een geneste boom. Elke node bevat:
| Veld | Betekenis |
|---|---|
name | Stabiele identifier die wordt gebruikt om paden te bouwen |
label | Voor mensen leesbare weergavenaam |
isLeaf | true wanneer de node een selecteerbaar opnameapparaat is |
dbuPath | Volledig opgelost apparaatpad op leaf-nodes; null op branches |
children | Onderliggende nodes (lege array op leaves) |
Voorbeeld (ingekort):
{ "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": [] } ] } ] } ]}Doorloop de boom totdat isLeaf true is en kopieer vervolgens dbuPath (hier POINTCLOUD/ZF/ZFSLAM).
Stap 2: de bundle maken
Section titled “Stap 2: de bundle maken”Maak de bundle onder een bovenliggende node waarop u rechten hebt (meestal een site of map). Geef de bundlenaam en de leaf-dbuPath uit stap 1 mee.
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"}Gebruik de geretourneerde id als bundleId voor de upload-, verwerkings- en downloadstappen.
Foutgevallen
Section titled “Foutgevallen”| Status | Oorzaak |
|---|---|
400 Bad Request | dbuPath is onbekend, geen leaf of niet beschikbaar |
403 Forbidden | Geen rechten op de bovenliggende node, of geen inhoudstoegang |
Volledig voorbeeld
Section titled “Volledig voorbeeld”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']}")Volgende stap
Section titled “Volgende stap”Met een bundleId in de hand gaat u verder naar Gegevens uploaden naar een data bundle.