Some Hexagon PPM desktop applications let the user define custom object hierarchies representing parent-child relationships between engineering entities.
A typical object hierarchy is a logical, tree-like structure that links various engineering objects together under a single name and can be traversed by navigating entity relationships.
Plant Breakdown Structure (PBS) is one such object hierarchy, with Plant -> Area -> Unit being a common example.
You can discover the available object hierarchies for a Smart API via annotations on the container entity, for example:
https://sam.spclouddave.com/SampleService/Sppid/v2/Annotations/$metadata
<Annotations Target="Com.Ingr.Sppid.V1.Container">
<Annotation Term="Com.Ingr.Core.V1.ObjectHierarchies">
<Collection>
<Record>
<PropertyValue Property="Name" String="PBS" />
<PropertyValue Property="Description" String="Plant Breakdown Structure" />
<PropertyValue Property="Root" NavigationPropertyPath="Plants" />
<PropertyValue Property="Descendants">
<Collection>
<NavigationPropertyPath>Com.Ingr.Sppid.V1.Plant/Areas</NavigationPropertyPath>
<NavigationPropertyPath>Com.Ingr.Sppid.V1.Area/Units</NavigationPropertyPath>
</Collection>
</PropertyValue>
<PropertyValue Property="Parents">
<Collection>
<NavigationPropertyPath>Com.Ingr.Sppid.V1.Area/Parent</NavigationPropertyPath>
<NavigationPropertyPath>Com.Ingr.Sppid.V1.Unit/Parent</NavigationPropertyPath>
</Collection>
</PropertyValue>
</Record>
</Collection>
</Annotation>
</Annotations>
Because object hierarchies (or their resources) can be used as input parameters to parametric filters, they must be discoverable by a client. Find more information about using object hierarchies as input parameters in the Parametric Filters (OData+) topic.