iSheet Audit History REST APIs

I'm trying to understand what is possible with the iSheet REST APIs related to audit history.

The use case is that every month we need to show all of the records and indicate what has changed in an iSheet.  There are 3 types of changes: 1 - new records, 2 - deleted records and 3 - modified records.  I assume this REST call can get us that information:  collaborate.highq.com/.../viewWikiPage.action There is no way to limit the results to a given time frame?  Instead, we simply need to request all of the results and iterate through them for the actions made during the time period in question?   I guess we could try to track the nextauditid for the last activity in each month and start the query from there for the next month?

Once we have identified the records that have changed, we would want to show which values had been updated (at the row and column level), likely limited to showing the new values.  The iSheet audit comparison feature on the site is very nice for this.  Can that be replicated with the collaborate.highq.com/.../viewWikiPage.action call?  

The goal would likely be preparing an Excel or CSV file showing all of the records with an initial column indicating "New", "Deleted" or "Updated" and for the "Updated" records showing the changed values set off some way, perhaps in a different font color.  

Has anyone undertaken an effort like this?

  • Mark Salamon, their iSheet audit history is extremely limited and it is something we have asked to be improved.

    ../showSwaggerUI.action#/ISheet%20Module/getISheetLevelAuditHistory

    This feeds back last modified by , time and the version of the record it is basically the same data contained in "more actions" -> "Audit history". There is currently no way (that I certainly know of) to check what has been changed.This feature only exists in the UI as a comparison.

    While you could export the data and do your own comparison based on the information you would still have to go the UI and check to see who made which changes. (I.e I compare data, v1 v v3 , I can see person X and Y edited the record but I can't tell from this who changed what).I also wouldn't be able to tell if person Y changed what person X did , only that person Y saved a record that was different to my base comparison.

    Hope this is useful to you

  • David Corrin (Btw, I believe I might have slightly misstated how the REST calls above work.) That's very useful.

    If I am not concerned with who made what change but simply find all of the changes, is that possible. I was most intrigued by what you said: "You could export the data and do your own comparison". Do you mean I could export specific versions of individual records using the REST API?

    Here is the algorithm I envision if I wanted to do this in a brute force way:

    1 - Use the sheet level audit history API call to get a list of every audit record for that sheet for a given time period, essentially a list of itemIDs and the type of activity (delete, add or update)

    2 - For every item (itemid) that was updated, determine the version before the start of that time period and the version at the end.

    3 - IF THIS IS POSSIBLE: Pull the full record for the start and end versions of each of those items that was updated.

    4 - Compare the two versions of each item and display the changes in an appropriate matter.

    My main question is whether it's possible to pull the full record of an item based on a specific version, instead of simply the current version. The GET record api call does not include a version parameter, which makes me think this is not possible: GET /api/3/isheet/{isheetid}/items/{itemid}

    When I view the audit history of an item in the UI and choose to view a specific version, this non-REST call is made to get that data: POST sheetVersionViewPage.action

    Is there a corresponding REST call for this? Is there any other way to do this but manually for each item from the UI?

    Similarly, there is a page that is called to run the comparison: POST showIsheetVersionsCompare.action

  • Mark Salamon.

    Unfortunately you would need to take backups of the data and then do comparisons on that. There is no way to pull out a specified version of a record - only the latest. The data exists in HighQ, we just can't leverage it. While your generic solution more configurable you could use a view to only show records where modified date is let's say within a day and you would then be able to see records that have been edited in that time frame (this would save parsing so much audit information). The advantage of audit call is that you retrieve version numbers though. I expect this functionality in the future but for now your use case will be painful you can only use imperfect workarounds. The extended audit history has no API endpoints, it is only accessible via the UI.

    As a side point, I would recommend removing your collaborate instance unique information from this thread.

  • Natasha Miller-Santos Is it on the roadmap to provide access to a specific version of an iSheet record via the REST API?

  • Would also be keen to include this functionality within xml feeds 2.0

  • Mark Salamon - One other point I forgot to mention. You aren't able to access the "Import Template" data via the API, you can only access the export data (i.e you can only pull down relevant data).

    If a user originally selected "Yes" which displayed 10 columns(each column populated) and then changed it to "No", which hid those 10 columns and/or showed new ones, the data in those now hidden columns and so they be exported as BLANK.That would be interpreted by a comparison that the user deleted the information. While this is technically correct (data is now considered fallback) it would make your comparisons perhaps quite complicated when in fact the person changed 1 pivot data point and that change just had consequences.

  •  Hi Seb, do you know if there any plans to expose the ability to retrieve earlier versions of an iSheet record/item via the API? 

    Currently, this is only possible via the interface but would prove ideal for improving our ability to create custom audit and version functionality.