Ga naar inhoud

Knooptypen en hiërarchie

Elke resource van de RealityConnect API wordt geadresseerd via een inhoudshiërarchie van getypeerde knopen. Deze pagina beschrijft de 10 knooptypen, de ouder/kind-regels die die boom geldig houden, en welke typen rechtstreeks kunnen worden aangemaakt versus typen die alleen ontstaan als resultaat van een andere actie.


DataNodeType heeft 10 waarden. Alleen Division, Site en Folder worden rechtstreeks aangemaakt via een endpoint voor het aanmaken van knopen; elk ander type ontstaat als neveneffect van een domeinspecifieke actie: een upload, het aanmaken van een bundle, verwerking, of een platform-/beheeractie.

TypeWat het isAangemaakt door
OrganizationDe wortel van de boom. Elke andere knoop is er een afstammeling van. parentId is null.Ingericht bij het aanmaken van de organisatie; nooit via de API
DivisionEen groepering op het hoogste niveau onder de organisatie (bijvoorbeeld een bedrijfsonderdeel of regio).POST /v1/nodes/{parentId}/division
SiteEen fysieke locatie onder een divisie. Bevat data bundles en is de eenheid die door de twin- en zoekroutes wordt geadresseerd.POST /v1/nodes/{parentId}/site
FolderEen nestbare groepering om inhoud te organiseren onder een site of een andere map.POST /v1/nodes/{parentId}/folder
ProjectEen RealityPlan Project.POST /v1/bundles/{bundleId}/create-project, zodra een data bundle een verwerkte, weergeefbare component heeft
TwinDe 3D-ruimtedescriptor van een site. Een twin wordt geadresseerd via het knoop-id van zijn site, dus er is geen aparte aanmaakstap.Platformactie (publiceren van een twin)
DataBundleEen vastgelegde dataset (puntenwolk, mesh, panorama’s, enz.) en de bijbehorende verwerkingsresultaten.POST /v1/nodes/{parentId}/bundle, met een opgelost dbuPath
SiteFileEen ruw geüpload bestand dat geen deel uitmaakt van een data bundle.POST /v1/site-files (een aparte uploadflow, geen endpoint voor het aanmaken van knopen)
ArtifactEen bijlage of uitvoerartefact dat aan twin-inhoud is gekoppeld.Platform-/verwerkingsactie
AssetLibraryEen bibliotheek van herbruikbare modellen op organisatieniveau.Ingericht op organisatieniveau; nooit via de API

De drie aanmaakbare typen vormen een vaste ruggengraat, waarbij elk type precies één ouder-type accepteert:

OuderAccepteert kind-typeRoute
OrganizationDivisionPOST /v1/nodes/{parentId}/division
DivisionSitePOST /v1/nodes/{parentId}/site
Site of FolderFolderPOST /v1/nodes/{parentId}/folder

Folder is het enige type dat onder zijn eigen type genest wordt, dus dat is de enige plek waar de diepte vanuit één enkele API-aanroep onbeperkt kan groeien. Buiten deze ruggengraat handhaaft het platform een maximale hiërarchiediepte; het publiceert geen exact getal, maar de volgende twee foutcodes bestaan juist om een aanvraag te onderscheppen die deze zou overschrijden of een knoop verkeerd zou plaatsen:

  • MaxDepthExceeded (geretourneerd door PATCH /v1/nodes/{nodeId}/move/{newParentId}): de bestemming zou de knoop dieper plaatsen dan het platform toestaat. Verplaats de knoop naar een minder diepe positie in plaats van mappen eindeloos te nesten.
  • DoesNotMeetHierarchyConstraints (ook geretourneerd door het verplaats-endpoint): de doelouder accepteert het type van deze knoop niet. Controleer de tabel hierboven (of de werkelijke positie van het type, via browsen) voordat u verplaatst.

Een knoop aanmaken onder het verkeerde ouder-type wordt op dezelfde manier geweigerd: POST /v1/nodes/{parentId}/site met een parentId die geen Division is, retourneert 409 { "error": "ParentTypeNotValid" }.

Zie Foutcodes voor de volledige responsestructuur en alle overige verplaats-/verwijdercodes.

DataBundle-knopen worden aangemaakt onder een site of map, en SiteFile-knopen worden aangemaakt onder een ouder-id dat aan de uploadflow wordt doorgegeven. Beide accepteren in de praktijk dezelfde twee ouder-typen als Folder, maar via hun eigen domeinspecifieke endpoints in plaats van een generieke route voor het aanmaken van knopen. De overige typen (Twin, Artifact, AssetLibrary) worden gepositioneerd door de platform- of verwerkingsactie die ze produceert, blader dus door de boom om ze te vinden in plaats van een vaste plek te veronderstellen.

GET /v1/nodes/{id}/browse en GET /v1/nodes/search retourneren knopen beide in deze structuur:

{
"id": "a6f75b3c-f261-4b27-9a2a-9a6cc1234c53",
"createdAt": "2026-06-01T10:00:00.000Z",
"updatedAt": "2026-06-01T10:00:00.000Z",
"name": "Building A",
"type": "Site",
"createdById": "8f0b9a2c-8f1b-4a10-9e1c-0b3a2d9a4b7d",
"parentId": "d2a1c4b7-3e10-4f2c-9a6b-7c1d8e2f3a45",
"childrenCount": 4,
"bytesStored": 15728640,
"thumbnailSignedUrl": null
}
VeldOpmerkingen
typeEen van de 10 bovenstaande DataNodeType-waarden
parentIdAlleen null voor de Organization-wortel
childrenCountAlleen directe kinderen, niet de hele subboom
bytesStoredOpslaggrootte van de subboom in bytes
thumbnailSignedUrlOptioneel. Alleen aanwezig wanneer de aanvraag hiervoor kiest met includeThumbnail=true, en alleen wanneer er een miniatuur bestaat

Beide routes retourneren dezelfde DataNode-structuur, maar beantwoorden verschillende vragen en hebben verschillende limieten:

GET /v1/nodes/{id}/browseGET /v1/nodes/search
Beantwoordt”Wat zijn de directe kinderen van deze knoop?""Vind knopen die aan deze filters voldoen, overal waar ik toegang heb”
BereikDirecte kinderen van één knoopDe hele organisatieboom die aan het access token is gekoppeld
limit1–201–50
Standaard limit2050
FilterenGeen, alleen paginering en sorteringNaam, type, ouder/voorouder, aanmaker, tijdstempels, opslaggrootte, aantal kinderen

Voor de werkwijze om uw eerste knoop-id te achterhalen en browse aan te roepen, zie Uw ID’s vinden. Voor de volledige set search-queryparameters, filtercombinaties en voorbeelden, zie Bedrijfsobjecten en knopen doorzoeken.

Twin-, DataBundle- en AssetLibrary-knopen verschijnen in browse- en zoekresultaten net als elke andere knoop, maar zodra u hun id heeft, adresseert u hun inhoud via een andere routefamilie in plaats van /v1/nodes:

KnooptypeGeadresseerd via id op
Twin/v1/twin/{contextId}/... (ruimtedescriptor, zoeken naar bedrijfsobjecten)
DataBundle/v1/bundles/{bundleId}/... (componenten, verwerkingen, verwerkingsopties)
AssetLibrary/v1/asset-library/... (als ownerContextId)