Story #3209: As a user, I have Repository Versions
As an authenticated user, I can list repository version content, added content, removed content
Three detail routes need to be added to the RepositoryVersion viewset.
/api/v3/repositories/<uuid>/versions/<id>/content/ - paginated list of all content in particular version
/api/v3/repositories/<uuid>/versions/<id>/added_content/ - paginated list of content added since the previous version
/api/v3/repositories/<uuid>/versions/<id>/removed_content/ - paginated list of content removed since the previous version
#4 Updated by mhrivnak over 2 years ago
There's an important bit of nuance to the "added" and "removed" attributes that's worth capturing. They are derived attributes whose state depends on the state of previous versions. You could define them as:
"The set of content added/removed since the previous known version that has not been deleted."
The result is that deleting a version will cause the next version to inherit some or all of its changes. For example: If version 2 adds A, and version 3 adds B, then you delete version 2, the result is that version 3 will be shown as having added A and B.
Since they represent the differences between two versions, that makes them quite a bit different from the "content" attribute which is immutable and scoped to a single object. It would be a good idea to communicate this clearly in the API docs.
I wrestled with whether or not to even include the "added" and "removed" attributes directly on each version representation. Ultimately I kept them at least as a way to demonstrate how easy it is to get that information, but it might be worth considering if there is a more clear way to present it.
Please register to edit this issue