本文档描述网盘与相册服务(开发者版)的文件历史版本功能,您可以通过PDS提供的默认客户端使用历史版本功能,也可以参考该文档调用API实现文件历史版本的管理。
基本概念
功能介绍
- 该功能开启后,支持文件多版本备份,可以安全地保存文件及其历史版本,即使文件被覆盖或者错误修改,也可以轻松恢复文件的历史版本。 
- 编辑或覆盖文件会产生历史版本,支持列举、查看、恢复、删除历史版本,支持为历史版本设置标记信息。 
- 支持配置版本保存期限(1-999天),或者设置不超期,支持进行周期内版本自动合并以避免产生过多历史版本。 
- 支持配置版本保存个数(1-999个),并支持将最多50个版本设置为永久保留,永久保留的版本不会因超期或超过数量限制而被删除。 
前提条件
- 已创建网盘与相册服务(开发者版)域。 
- 该功能仅限超级管理员或网盘管理员开启。 
开启历史版本
- 登录BasicUI,进入管理控制台。 
- 在左侧导航栏选择。 
- 打开历史版本开关。  
历史版本配置
在历史版本右侧单击编辑可对历史版本配置进行修改。
| 功能 | 说明 | 
| 合并文件历史版本 | 默认开启。文件在10分钟内的多次保存结果(如在线编辑保存、同步盘上传)将合并生成一个历史版本。取消勾选后,每次保存结果均生成一个历史版本(包含自动保存和手动保存)。 | 
| 版本数量上限设置 | 
 | 
| 版本存放期限设置 | 
 | 
API 调用流程及示例
生成新版本
上传文件后,文件只有一个版本。覆盖上传文件后,文件会产生新版本。
覆盖上传的逻辑,可参考文件上传最佳实践中的相关描述。覆盖文件的基本逻辑是:在CreateFile - 创建文件或文件夹接口中,设置 file_id 为要覆盖的文件ID,其它流程和普通上传一致。
列举历史版本
调用ListRevision - 列举版本接口,获取单个文件的版本列表,支持分页。返回的版本列表,以产生的时间倒序排序,越近产生的版本,排序越靠前。
请求示例:
{
	"drive_id":"testDriveId",
	"file_id": "testFileId"
}响应示例:
{
	"items": [{
		"domain_id": "testDomainId",
		"drive_id": "testDriveId",
		"file_id": "testFileId",
		"revision_id": "testRevisionId",
		"revision_name": "history_version.xlsx",
		"file_extension": "xlsx",
		"size": 8493,
		"revision_version": 2,
		"keep_forever": false,
		"revision_description": "",
		"revision_create_reason": "overwrite",
		"content_hash_name": "sha1",
		"content_hash": "xxxxxx",
		"crc64_hash": "xxxxxx",
		"created_at": "2022-09-05T04:00:09.017Z",
		"updated_at": "2022-09-05T04:00:09.017Z",
		"creator_type": "User",
		"creator_id": "testCreatorId",
		"is_latest_version": true
	}],
	"next_marker": ""
}名词解释:
- 请求参数drive_id,是个人空间或团队空间的ID。 
- 请求参数file_id,是文件ID,不能是文件夹ID。 
- 分页获取时,请求响应中的参数next_marker是下一页起始资源标识符,可设置为下一次请求的marker参数。当一次请求的响应参数next_marker为空时,表示已经获取到最后一页。 
- 响应参数revision_version,表示版本编号,编号越小,产生的时间越早。 
- 响应参数revision_create_reason,表示版本生成的方式,有效值包括: - "":新建 
- "overwrite":覆盖更新 
- "restore_rev":历史版本还原 
 
- 响应参数is_latest_version,标识文件是否为最新版本。 
- 响应参数revision_name,最新版本的名字,和文件保持一致;历史版本的名字,在历史版本生成时固定。 
获取版本信息
调用GetRevision - 获取版本信息信息接口,可以获取单个版本的详情。与列举历史版本接口相比,获取版本信息接口的响应信息增加了下载地址。
请求示例:
{
	"drive_id":"testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId"
}返回示例:
{
	"domain_id": "testDomainId",
	"drive_id": "testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId",
	"revision_name": "history_version.xlsx",
	"file_extension": "xlsx",
	"size": 8493,
	"revision_version": 2,
	"keep_forever": false,
	"revision_description": "",
	"revision_create_reason": "overwrite",
	"content_hash_name": "sha1",
	"content_hash": "xxxxxx",
	"crc64_hash": "xxxxxx",
	"created_at": "2022-09-05T04:00:09.017Z",
	"updated_at": "2022-09-05T04:00:09.017Z",
	"creator_type": "User",
	"creator_id": "testCreatorId",
	"is_latest_version": true,
	"download_url": "testDownloadUrl"
}更新版本信息
调用UpdateRevision - 更新版本信息接口,可以设置版本的属性。
设置永久保留某个版本
- 支持将最多50个版本设置为永久保留,永久保留的版本不会因超期或超过数量限制而被删除。 
- 永久保留的版本,可以通过删除历史版本删除。 
- 永久保留的版本,在彻底删除文件时会被删除。 
请求示例:
{
	"drive_id": "testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId",
	"keep_forever": true
}取消永久保留某个版本
请求示例:
{
	"drive_id": "testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId",
	"keep_forever": false
}设置版本的描述信息
请求示例:
{
	"drive_id": "testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId",
	"revision_description": "this is a revision"
}还原历史版本
- 该接口不支持还原文件的最新版本。 
- 还原版本时,以一个历史版本来生成一个新版本,历史版本状态不变,新版本的创建者为还原历史版本的操作者。如果需要清理历史版本以释放其占用的空间,需要主动调用DeleteRevision - 删除历史版本接口。 
调用RestoreRevision - 还原历史版本接口,可以将一个历史版本还原为文件的最新版本。
请求示例:
{
	"drive_id": "testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId"
}删除历史版本
该接口不支持删除文件的最新版本。
调用DeleteRevision - 删除历史版本接口,可以删除一个历史版本,释放其占用的空间。
请求示例:
{
	"drive_id": "testDriveId",
	"file_id": "testFileId",
	"revision_id": "testRevisionId"
}