buildingSMART / OpenCDE-API

57 stars 9 forks source link

Support for re-reading files #12

Open lasselindqvistsolibri opened 3 years ago

lasselindqvistsolibri commented 3 years ago

The API does allow user to choose a file via a web browser basically and then the application to read the contents of that file.

But does this API support the application to keep a unique identifier of that file, and later use that identifier to query the status/version of it from the server? The application would then see if the version has changed indicating changes in it and re-read the contents of the file. This would allow the application to automatically update the local contents from a server file.

jsdbroughton commented 3 years ago

Should this be as a SHA hash or something more human readable?

lasselindqvistsolibri commented 3 years ago

Should this be as a SHA hash or something more human readable?

I would personally prefer something with an order, if possible. Dropbox has revision in their API that tells how many changes there have been. Microsoft has at least timestamps in their Graph API.

GeorgDangl commented 3 years ago

Would a simple string identifier, generated by the server, work? Then the client has a unique key for the file, and the server may decide how this key looks.

ykulbak commented 3 years ago

The API provides permalinks to list the revisions of the file and get its metadata. Once an application has obtained the URLs for these endpoints it should be able to use those to refresh the information about the file.

lasselindqvistsolibri commented 3 years ago

The API provides permalinks to list the revisions of the file and get its metadata. Once an application has obtained the URLs for these endpoints it should be able to use those to refresh the information about the file.

Do you mean the vendor-specific metadata? If so, that cannot be used in an application without beforehand-knowledge to implement automatic reloading of file contents. It would require a vendor-specific solution for each possible vendor.

But if it is the VersionsLink https://github.com/buildingSMART/OpenCDE-API/blob/master/openapi/openCDE-spec.yaml#L152 and if / is guaranteed to return static version strings that neven change, it would be usable for this purpose.

Related note: https://github.com/buildingSMART/OpenCDE-API/blob/master/openapi/openCDE-spec.yaml#L191 uses "revisions" in the URL? Is this an accident and it should be "versions" or is revision a different thing?