In our Gemstone projects we have used the same strategy: the data is located in a tree structure – started from a root. We have no large structure (e.g. index bag) where one simple lookup will find the object.
During REST calls we therefore have the need to find the objects in that tree structure.
This is – how I call it – a search path. The search path goes from the root via several multiple-/single-cardinality associations and leads us to the object we are are looking for.
The parameter of the REST calls therefore has to deliver the needed ids to find the objects in the numerous multiple-cardinality associations contained in the search path.
PUM now allows to define searchPath attributes (normally in the project class, where the data root is located) and it creates the needed access methods in various classes.