使用活动日志 API 查看企业中发生的事件。
谁可以使用活动日志 API
活动日志 API 允许你对企业事件进行编程访问,你可以查看任意企业中成员和访客在企业中发生的事件,你可以使用活动日志 API 构建你的自定义应用程序。
你可以通过将令牌传递到 Authorization: Bearer <token>
请求头中来调用 API。 以下是一个示例:
curl 'https://api.motiff.cn/api/v1/organizations/activity_logs?orgId=${orgId}' \
--header 'Authorization: Bearer <TOKEN>'
返回活动日志事件列表。
GET /api/v1/organizations/activity_logs
路径参数 | 是否必填 | 参数类型 | 描述 |
---|---|---|---|
orgId | 是 | String | 查询企业的 ID |
actionTypes | 否 | String | 响应事件的操作类型。可以有多个值,用逗号分隔。默认情况下返回所有操作类型的事件。 |
startTime | 否 | Number | 查询最远事件的 Unix 时间戳(毫秒)。如果未指定,默认 0 。 |
endTime | 否 | Number | 查询最近事件的 Unix 时间戳(毫秒)。如果未指定,默认为当前时间戳。 |
limit | 否 | Number | 单次请求返回的最大事件数。如果未指定,此参数默认为 1000。 |
order | 否 | String | 按时间戳对事件进行排序。该参数可以是“ASC”(默认)或“DESC”。 |
cousor | 否 | String | 事件总数超过 limit 上限时,API 将对结果进行分页, 响应中包含 cursor 字段。要获取下一批事件,请将 cursor 参数添加到新的查询字符串中。 |
注:只能查询到 2024 年 9 月 15 日之后的事件。
Error code | Description |
---|---|
400 | 参数错误 |
401 | 认证失败 |
403 | 无权限访问所请求的活动日志 |
429 | 接口限流 |
使用查询字符串参数向你的请求添加过滤器。你可以添加路径参数的组合来创建特定查询。以下是一些示例:
curl -H 'Authorization: Bearer <TOKEN>' 'https://api.motiff.cn/api/v1/organizations/activity_logs? orgId=xxx&actionTypes=upgrade_seat,downgrade_seat'
curl -H 'Authorization: Bearer <TOKEN>' 'https://api.motiff.cn/api/v1/organizations/activity_logs? orgId=xxx&actionTypes=create_team&startTime=1717222800000&endTime=1722534308000'
limit
上限时,使用响应中的 cursor
字段获取下一批事件,需要将 orgId
和 cursor
参数添加到新的查询字符串中curl -H 'Authorization: Bearer <TOKEN>' 'https://api.motiff.cn/api/v1/organizations/activity_logs?orgId=xxx&cursor=Y3Vyc29yIGN1cnNvciBjdXJzb3I='
活动日志 API 返回的每个事件都包含四个部分:actor、action、entity 和 context。
actor
是执行该操作的用户。可以通过三个属性来识别用户: email、 id 和 name 。action
是 actor
执行的任务或活动。其中 action_type 表示操作的类型,details表示相关的元数据。查看支持的操作类型和对应元数据entity
是被 actor
执行操作的实体。它可以是用户、文件、项目或其他资源类型。查看支持的 entity 类型和属性context
包含事件的其他上下文信息:
此示例显示管理员邀请用户加入企业时记录的事件:
{ "actor": { "name": "admin" "id": "19799193456756", "email": "admin@motiff.com", }, "action": { "action_type": "invite_org_member" "details": { "seat_type": "viewer" }, }, "entity": { "nickname": "username", "id": "187991918120844", "type": "user" "email": "username@motiff.com", }, "context": { "teamId": "wUSjbhzh4xaR1gTeU7mRRX" "orgId": "AH0gDGssK5AVX01hsTQjag", }, "id": "208397249393110", "eventTime": 1717222800000 }
以下是你可以在 API 响应的 Entity 字段下找到的常见类型:
字段 | 类型 | 描述 |
---|---|---|
id | Number | 用户唯一标识 |
nickname | String | 姓名 |
String | 邮箱 |
字段 | 类型 | 描述 |
---|---|---|
id | String | 文件唯一标识 |
name | String | 文档名称 |
link_access | String | 文件链接分享权限 |
字段 | 类型 | 描述 |
---|---|---|
id | String | 项目唯一标识 |
name | String | 项目名称 |
字段 | 类型 | 描述 |
---|---|---|
id | String | 团队唯一标识 |
name | String | 团队名称 |
字段 | 类型 | 描述 |
---|---|---|
id | String | 组织唯一标识 |
name | String | 组织名称 |
以下是你可以在 API 响应的 action
字段下找到的操作类型:
action_type | description | details |
---|---|---|
create_file | 创建文件 | project_id 项目 ID project_name 项目名称 |
ai_create_file | 生成设计系统文件 | project_id 项目 ID project_name 项目名称 |
import_file | 导入文件 | project_id 项目 ID project_name 项目名称 |
copy_file | 创建文件副本 | |
copy_file_to_draft | 创建文件副本到草稿 | |
move_file | 移动文件 | project_id_old 操作前的项目 ID project_name_old 操作前的项目名称 project_id_new 操作后的项目 ID project_name_new 操作后的项目名称 |
trash_file | 删除文件 | |
delete_file | 永久删除文件 | |
restore_file | 恢复文件 | project_id 项目 ID project_name 项目名称 |
open_file | 访问文件 | access 访问文件时的权限 |
rename_file | 重命名文件 | file_name_old 操作前的文件名称 file_name_new 操作后的文件名称 |
export_file | 导出文件内容 | |
invite_file_member | 邀请用户加入文件 | file_id 文档 ID file_name 文档名称 user_permission 用户权限 |
remove_file_member | 从文件中移除用户 | file_id 文档 ID file_name 文档名称 user_permission_old 操作前的用户权限 |
leave_file | 离开文件 | file_id 文档 ID file_name 文档名称 user_permission_old 操作前的用户权限 |
change_file_member_access | 修改文件成员权限 | file_id 文档 ID file_name 文档名称 user_permission_old 操作前的用户权限 user_permission_new 操作后的用户权限 |
change_file_inherited_access | 修改文件的项目继承权限 | inherited_access_old 操作前的继承权限 inherited_access_new 操作后的继承权限 |
enable_file_link_access | 启用文件链接分享 | |
disable_file_link_access | 禁用文件链接分享 | |
change_file_link_access | 修改文件链接分享配置 | file_link_access_old 操作前的文件的链接分享配置 file_link_access_new 操作后的文件的链接分享配置 |
open_file_password | 打开文件的链接分享密码 | |
close_file_password | 关闭文件的链接分享密码 | |
reset_file_password | 重置文件的链接分享密码 | |
create_project | 在团队下创建项目 | team_id 团队 ID team_name 团队名称 |
delete_project | 删除项目 | team_id 团队 ID team_name 团队名称 |
move_project | 移动项目 | team_id_old 操作前的团队id team_name_old 操作前的团队名称 team_id_new 操作后的团队id team_name_new 操作后的团队名称 |
rename_project | 重命名项目 | team_name_old 操作前的团队名称 team_name_new 操作后的团队名称 |
invite_project_member | 邀请用户加入项目 | project_id 项目 ID project_name 项目名称 user_permission 用户权限 |
remove_project_member | 从项目中移除成员 | project_id 项目 ID project_name 项目名称 user_permission_old 操作前的用户权限 |
leave_project | 从项目中离开 | project_id 项目 ID project_name 项目名称 user_permission_old 操作前的用户权限 |
change_project_member_access | 修改项目成员权限 | project_id 项目 ID project_name 项目名称 user_permission_old 操作前的用户权限 user_permission_new 操作后的用户权限 |
change_project_inherited_access | ==修改项目的团队继承权限== | inherited_access_old 操作前的继承权限 inherited_access_new 操作后的继承权限 |
create_team | 创建团队 | team_org_access 团队公开性配置 |
delete_team | 删除团队 | |
restore_team | 恢复团队 | |
invite_team_member | 邀请用户加入团队 | team_id 团队 ID team_name 团队名称 user_permission 用户权限 |
remove_team_member | 从团队中移除成员 | team_id 团队 ID team_name 团队名称 user_permission_old 操作前的用户权限 |
leave_team | 离开团队 | team_id 团队 ID team_name 团队名称 user_permission_old 操作前的用户权限 |
change_team_member_access | 修改团队成员权限 | team_id 团队 ID team_name 团队名称 user_permission_old 操作前的用户权限 user_permission_new 操作后的用户权限 |
join_team_by_invite_link | 通过团队邀请链接加入团队 | team_id 团队 ID team_name 团队名称 |
rename_team | 重命名团队 | team_name_old 操作前的团队名称 team_name_new 操作后的团队名称 |
login | 登录 | |
logout | 退出登录 | |
remove_org_member | 移除企业成员 | |
join_org_by_access_file | 访问文件加入企业 | file_id 文档 ID file_name 文档名称 |
add_org_admin | 将企业成员设为企业管理员 | |
remove_org_admin | 移除企业管理员 | |
open_file_prototype | 访问文件原型 | |
invite_org_member | 邀请用户加入企业 | seat_type 席位类型 |
apply_org_seat_when_import_file | 申请席位:导入文件 | seat_type 席位类型 project_id 项目 ID project_name 项目名称 |
apply_org_seat_when_create_file | 申请席位:创建文件 | seat_type 席位类型 project_id 项目 ID project_name 项目名称 |
apply_org_seat_when_move_file | 申请席位:移动文件 | seat_type 席位类型 project_id_old 操作前的项目 ID project_name_old 操作前的项目名称 project_id_new 操作后的项目 ID project_name_new 操作后的项目名称 file_id 文档 ID file_name 文档名称 |
apply_org_seat_when_edit_file | 申请席位:编辑文件 | seat_type 席位类型 file_id 文档 ID file_name 文档名称 |
apply_org_seat_when_use_dev_mode | 申请席位:在文件中使用研发模式 | seat_type 席位类型 file_id 文档 ID file_name 文档名称 |
approve_seat_request | 通过席位申请 | seat_type 席位类型 |
deny_seat_application | 拒绝席位申请 | seat_type 席位类型 |
upgrade_themselves_when_import_file | 自主升级席位:导入文件 | seat_type 席位类型 project_id 项目 ID project_name 项目名称 |
upgrade_themselves_when_create_file | 自主升级席位:创建文件 | seat_type 席位类型 project_id 项目 ID project_name 项目名称 |
upgrade_themselves_when_move_file | 自主升级席位:移动文件 | seat_type 席位类型 project_id_old 操作前的项目 ID project_name_old 操作前的项目名称 project_id_new 操作后的项目 ID project_name_new 操作后的项目名称 file_id 文档 ID file_name 文档名称 |
upgrade_themselves_when_edit_file | 自主升级席位:编辑文件 | seat_type 席位类型 file_id 文档 ID file_name 文档名称 |
upgrade_themselves_when_use_dev_mode | 自主升级席位:在文件中使用研发模式 | seat_type 席位类型 file_id 文档 ID file_name 文档名称 |
seat_start_billing_as_grace_period_ends | 席位结束宽限期开始计费 | seat_type 席位类型 |
upgrade_seat | 升级席位 | seat_type_old 操作前的席位类型 seat_type_new 操作后的席位类型 |
downgrade_seat | 降级席位 | seat_type_old 操作前的席位类型 seat_type_new 操作后的席位类型 |
open_org_public_link_sharing | 启用对外链接分享 | |
close_org_public_link_sharing | 禁用对外链接分享 | |
upgrade_themselves_when_batch_move_file | 自主升级席位:批量移动文件 | seat_type 席位类型 project_id 项目 ID project_name 项目名称 |
apply_org_seat_when_batch_move_file | 申请席位:批量移动文件 | seat_type 席位类型 project_id 项目 ID project_name 项目名称 |
enable_file_viewer_permissions | 修改文件的可查看者权限为允许复制、分享、导出 | |
disable_file_viewer_permissions | 修改文件的可查看者权限为不允许复制、分享、导出 | |
change_team_org_access | 修改团队对企业的公开性 | team_org_access_old 操作后的团队公开性配置 team_org_access_new 操作前的团队公开性配置 |
upgrade_themselves_when_share_drafts_v2 | 自主升级席位:分享草稿文件 | seat_type 席位类型 file_id 文档 ID file_name 文档名称 |
apply_org_seat_when_share_drafts_V2 | 申请席位:分享草稿文件 | seat_type 席位类型 file_id 文档 ID file_name 文档名称 |