# 数据结构
某些关键的接口会返回通用的数据结构,如用户信息、文档明细、协作者等。
# 用户
/**
* 用户信息
*/
export interface IflydocsUser {
/** 文档用户 ID */
uid: number
nickname: string
email: string
mobile: string
telephone: string
realName: string
headPhotoUrl: string
sex: boolean
birthday: null
appId: string
/** 业务用户 ID */
appUserId: string
updateTime: number
registrationTime: number
}
# 权限明细
/**
* 权限明细
*/
export interface IflydocsPermission {
/** 查看 */
read: boolean
/** 编辑 */
edit: boolean
/** 批注 */
annotate: boolean
/** 评论 */
comment: boolean
/** 新建 */
create: boolean
/** 删除 */
delete: boolean
/** 分享 */
share: boolean
/** 导出 */
export: boolean
/** 移动 */
move: boolean
/** 拷贝 */
copy: boolean
/** 修改协作者 */
updateCollaborator: boolean
/** 修改管理员 */
updateAdmin: boolean
/** 转让 */
transferSpace: boolean
/** 收藏 */
collection: boolean
/** 置顶 */
top: boolean
}
# 文件对象
/**
* 文件对象
*/
export interface IflydocsDocument {
/** 文件状态 */
status: FsStatus
/** 文件 ID */
fid: string
/** 应用 ID,需申请 */
appId: string
/** 文件名 */
name: string
/** 父文件夹 ID */
parentFid: string
/** 创建时间 */
createTime: number
/** 修改时间 */
modifyTime: number
/** 创建者 ID */
creator: number
/** 创建者名字 */
creatorName: string
/** 修改者 ID */
modifier: number
/** 修改者名字 */
modifierName: string
/** 拥有者 ID */
owner: number
/** 拥有者名字 */
ownerName: string
/** 文档类型 */
docType: DocType
/** 文件对象类型:文件或文件夹 */
type: FsType
/** 来源类型 */
sourceType: SourceType
/** 来源 ID */
sourceId: string
/** 后缀名 */
suffix: string
/** 文件类型 */
fileType: FileType
/** 协作状态 */
collaborativeStatus: CollaborativeStatus
/** 当前用户的角色类型 */
role: RoleType
/** 权限明细 */
permissions: IflydocsPermission
/** 元信息,只在 `fs/bs/fsFile` 接口返回 */
metadata?: Record<string, any>
}
# 文件大小
export interface IflydocsFileSize {
/** 文件字节大小,部分老数据可能返回 null */
size: number | null
}
# 文件列表
/**
* 文件列表
* 包含分页信息,可以用来分段请求数据
*/
export interface IflydocsFileList<T = IflydocsDocument> {
total: number
pageCount: number
count: number
results: T[]
}
# 协作者角色
/**
* 协作角色明细
*/
interface IflydocsRole {
fid: string
uid: number
role: RoleType
modifyTime: string
nickName: string
headPhotoUrl: string
mobile: null | string
isMine: boolean
describe: string
appUserId: string
}
# 协作者列表
/**
* 文档协作者列表
*/
export interface IflydocsCollaborators {
/** 继承自上级授权 */
upper: IflydocsRole[]
/** 直接授权 */
direct: IflydocsRole[]
}
# 离线上传结果
/**
* 离线上传处理结果
*/
export interface IflydocsOfflineUploadResult {
detail: IflydocsDocument
type: IflydocsOfflineUploadType
}
# 增量操作
/** 属性,加粗、斜体、字号等样式、以及标题、图片、表格等块。 */
interface AttributeMap {
[key: string]: any
}
/** 插入操作 */
interface InsertOp {
insert: string | object
attributes?: AttributeMap
}
/** 保留操作,一般用于格式化 */
interface RetainOp {
retain: number
attributes?: AttributeMap
}
/** 删除操作 */
interface DeleteOp {
delete: number
attributes?: AttributeMap
}
/** 普通操作,包含三种类型 */
export type OP = InsertOp | RetainOp | DeleteOp
/** 文档内容,只有 InsertOp */
export type OP_DOC = InsertOp
# 文档内容
/**
* 文档内容
*/
export interface IflydocsContent {
/** 操作序列 */
ops: OP_DOC[]
/** 纯文本内容 */
plain?: string
/** 文档名称 */
name: string
}
# 文件上传信息
/**
* 云盘文件上传信息
*/
export interface IflydocsFileUploadInfo {
/** 文件 ID */
fid: string
/** 上传链接 */
safetyChain: string | null
/** OSS 对象 ID */
objectId: string
/** 上传请求 ID,用于轮询上传结果 */
requestId: string | null
}
# 文档导出进度
/**
* 文档导出进度
*/
export interface IflydocsExportProcess {
/** 导出请求 ID */
exportRequestId: string
/** 请求开始时间 */
requestTime: number
/** 导出任务状态 */
status: IflydocsTaskStatus
/** 导出文件类型 */
exportFileType: IflydocsExportFileType
/** 用户 ID */
uid: number
/** 导出文档 ID */
fid: string
/** 导出文件容器 */
container: null | string
/** 导出文件对象 ID */
objectId: string
/** 导出文件下载链接 */
downloadSafetyChain: null | string
/** 导出文件下载链接有效时间 */
safetyChainEndTime: null | number
/** 开始处理时间 */
startProcessTime: null | number
/** 结束处理时间 */
overProcessTime: null | number
/** 保留字段,暂未使用 */
fastFailTime: null
}
# 文档导入进度
/**
* 文档导入进度
*/
export interface IflydocsImportProcess {
/** 导入请求 ID */
requestId: string
/** 请求开始时间 */
requestTime: number
/** 导入任务状态 */
status: IflydocsTaskStatus
/** 用户 ID */
uid: number
/** 导入目标文件夹 ID */
fid: string
/** 开始处理时间 */
startProcessTime: number
/** 结束处理时间 */
overProcessTime: null | number
/** 消息 */
message: null | string
}