We have noticed that the “id” of the speckle objects are sometimes changed in the next commit even if we do not change anything on this object on authoring software. Do you know which kind of changes on object may cause new hash generation for objects?
In this case, we have to use external application identifier(application_id). Is “application_id” provided on all speckle connectors?
Can we get the objects via application_id by using rest endpoints or do we need to use graphql and filter by parameters?
Hi @Baris! This shouldn’t happen in theory, but in practice it can happen from various reasons:
- converter/object model upgrades
- floating point precision “flickers” from host software
- other changes to the object (e.g., parameter order)
It would be cool if you could tell the scenario in which this happens on your end to see if there’s something we could guard against.
The rest api used for “downloading” objects does not support application_id based queries for the simple reason that not all objects have application ids. A workaround would be to use the graphql api to get the object via its application id, and then use the rest endpoint to download its entire tree.
Thank you for the detailed explanation.
Object Ids were same as long as we push the same model without changes. Then we have add two new object to Revit model and object id of the every single object was changed.
We are assuming then some changes has made in background of Revit.
In this case, there is no way to store any information for the objects without “application_id” out of speckle environment. Do you know which authoring software API/connector does not provide an unique identifier for the objects with geometry representations? We are trying to estimate how much data could we lose, if we store object information with “application_id”.