The Elements of APIs

Appendix: Versioning your Resources

If you’re implementing something that needs to keep track of drafts or a version history, consider creating two separate resources: one that represents the “latest” version and another that represents each revision. All of the required fields on the latest version should be optional on the revisions.

Consider blocking deletes and updates to revisions

The latest version is fully calculated based on revisions
Relationships between revisions; linked list
Ordered by timestamp
Using slugs as IDs and handling changes