便签与便签包接口
便签和便签包接口分别使用 notes.read、notes.write 权限。业务 Id、便签 Id、便签包 Id 可以使用 Guid;员工字段统一使用 virtualId。
新增便签。成功时响应 data 返回新建便签 Id(Guid),后续详情、共享、修改等操作应使用该 Id。
{
"name": "开放平台便签",
"content": "便签内容",
"parentId": "便签包或便签夹 Guid,可选",
"priority": 3,
"type": 1,
"score": 0,
"dueAt": "2026-08-22T17:32:50+08:00",
"assigneeVirtualIds": ["负责人 virtualId"],
"checkerVirtualId": "审核人 virtualId",
"ccVirtualIds": [],
"labelIds": [],
"attachmentUrls": []
}获取当前员工可见便签列表。统一使用 page、pageSize 和 keyword 分页筛选;可选 startAt、endAt、group、noteType。
列表响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
data.total | long | 符合筛选条件的便签总数。 |
data.page | int | 当前页码,从 1 开始。 |
data.pageSize | int | 当前页返回条数上限,范围为 1 到 100。 |
data.items | Note[] | 当前页便签列表;单项字段见下表。 |
Note 通用字段
GET /api/openplatform/notes、/notes/search、/notes/shares、/notePackages/{id}/notes 的 items 单项,以及 GET /api/openplatform/notes/{id} 的详情,均使用以下公开资源字段。
| 字段 | 类型 | 说明 |
|---|---|---|
id | guid | 便签资源标识,用于详情和动作路径。 |
name | string | 便签名称。 |
content | string | 便签内容;未填写时为空字符串。 |
parentId | guid | null | 所属便签包或便签夹标识;未归类时为 null。 |
noteType | int | 便签类型或象限类型。 |
priority | int | 便签优先级。 |
score | decimal | 关联贡献点,单位为“点”。 |
dueAt | string | null | 截止时间,ISO 8601 带时区字符串;未设置时为 null。 |
sendAt | string | null | 定时发送时间,ISO 8601 带时区字符串;未设置时为 null。 |
assignees | object[] | 负责人的成员对象数组(每项含 virtualId、name 与掩码 phone)。 |
checker | object | null | 审核人的成员对象(含 virtualId、name 与掩码 phone);未设置时为 null。 |
cc | object[] | 参与或抄送员工的成员对象数组(每项含 virtualId、name 与掩码 phone)。 |
labelIds | guid[] | 关联标签标识列表。 |
attachmentUrls | string[] | 附件公开访问 URL 列表。 |
isStarred | bool | 当前操作员工是否已关注该便签。 |
canEdit | bool | 当前操作员工是否具备编辑权限。 |
canDelete | bool | 当前操作员工是否具备删除权限。 |
canSend | bool | 当前操作员工是否具备发送权限。 |
createdAt | string | 创建时间,ISO 8601 带时区字符串。 |
updatedAt | string | null | 最后更新时间,ISO 8601 带时区字符串;未更新时可能为空或 null。 |
获取便签详情。另有 /search、/shares、/records、/{id}/shareRecord 查询接口。
响应字段:返回一个完整 Note 对象,字段、类型和含义见上方“Note 通用字段”。
便签写操作的 action:delete、star、share、cancelShare、editPermission、lock、unlock、toPackage、singleEdit、send、setTop、uploadAttachment。所有写操作均使用当前动作资源路径。
路径中的 {id} 为便签 Id。除下表标明的参数外,动作请求体传空对象 {}。员工参数必须使用当前 API Key 下的 virtualId,不能传真实员工 Guid。
| action | 请求体示例 | 参数说明 |
|---|---|---|
delete | {} | 无请求参数。删除当前便签。 |
star | {} | 无请求参数。切换当前便签的关注状态。 |
share | { "sharedEmployeeVirtualIds": ["员工 virtualId"], "canEdit": true, "canDelete": false, "canSend": false } | sharedEmployeeVirtualIds 必填;权限布尔值可选,省略时按 false 处理。 |
cancelShare | { "sharedEmployeeVirtualIds": ["员工 virtualId"] } | sharedEmployeeVirtualIds 必填,要取消共享的员工列表。 |
editPermission | { "sharedEmployeeVirtualIds": ["员工 virtualId"], "canEdit": true, "canDelete": false, "canSend": true } | sharedEmployeeVirtualIds 必填,通常传一个共享员工;三个权限字段用于修改编辑、删除、发送权限。 |
lock / unlock | {} | 无请求参数。锁定或解锁当前便签。 |
toPackage | { "packageId": "便签包或便签夹 Guid" } | packageId 必填,将当前便签移动到指定便签包。 |
singleEdit | { "noteType": 1, "content": "新的名称" } | noteType 和 content 必填,具体格式见下方“单项修改 noteType”。 |
send | { "isRemove": false } | isRemove 可选,是否发送成功后删除便签,默认 false。当前便签必须已有负责人。 |
setTop | {} | 无请求参数。切换当前便签置顶状态。 |
uploadAttachment | { "url": "https://www.example.com/file.txt" } | url 和 resId 至少传一个。url 为附件公开地址,resId 为附件上传接口返回的资源 Id。 |
singleEdit 的 noteType 参数
| noteType | content 格式 | 说明 |
|---|---|---|
1 | 普通字符串 | 修改名称。 |
2 | HTML 字符串 | 修改便签内容。 |
3 | JSON 字符串 | 修改贡献点、预计工时和难度,例如 {"score":5,"difficulty":2,"workingHoursData":{"estimated":8,"unit":1}}。 |
4 | 数字字符串 | 修改优先级,取值 1 到 5。 |
5 | 带时区的 ISO 8601 时间字符串 | 修改截止时间。 |
6 | 检查项 JSON 字符串 | 按详情接口返回的检查项结构提交检查项变更。 |
9 | 能力 Id 字符串 | 修改能力需求。 |
10 | 带时区的 ISO 8601 时间字符串 | 修改定时发送时间。 |
11 | 象限值 | 修改所在象限,取值 1:重要且紧急,2:重要不紧急,3:不重要紧急,4:不重要不紧急。 |
45、46、47、48、49、54 | 按对应业务模型提交 | 分别用于自定义项新增/修改、删除自定义项、删除自定义组、切换里程碑、修改预计工时、修改难度。涉及内部自定义项结构的动作,建议先读取详情后按原结构提交。 |
singleEdit 的负责人、参与人、审核人内部动作仍要求员工 Id 数组或 Guid。开放平台当前不公开这些未完成 virtualId 转换的单项修改类型(7、8、18),请勿直接传真实员工 Guid。delete、share、cancelShare、lock、unlock、send 为队列型操作,返回成功只表示请求已受理;最终结果请通过详情或 Webhook 确认。全量替换便签标签:以请求中的标签 Id 集合为最终状态,需要新增与移除的标签由平台自动补差完成,与工作台标签维护同链路(操作人需有便签权限)。同步处理,返回成功即已生效。
X-Employee-Virtual-Id。未传时返回 403。| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
labelIds | guid[] | 是 | 替换后的标签 Id 全集,来自 GET /api/openplatform/labels;重复 Id 自动去重;传空数组 [] 表示清空便签全部标签。 |
请求示例:
PUT /api/openplatform/notes/a1b2c3d4-e5f6-7890-abcd-ef1234567890/labels
Content-Type: application/json
X-Employee-Virtual-Id: emp_T7dQ2mYk8rLp4cN1sVx3bH9wAe6fJuKz
{
"labelIds": [
"2f6e8a10-3c4b-4d5e-9f80-a1b2c3d4e5f6"
]
}labelIds 中的已有标签会被移除;只想追加标签时,请先通过便签详情读取当前标签再合并提交。标签不存在、操作人无便签权限等业务校验失败时返回对应错误,已生效的部分变更不回滚。新增便签包,请求字段为 name、content、sharedEmployeeVirtualIds。成功时响应 data 返回新建便签包 Id(Guid)。便签夹使用 POST /api/openplatform/notePackages/folders,字段为 parentId、name、folderType,成功时同样返回新建便签夹 Id。
获取便签包列表。其他查询包括 /{id}、/{id}/notes、/search、/tree、/tree/all、/{id}/shareRecord;/tree 的 parentId 可省略,省略时返回根节点。
列表和详情响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
data.total | long | 列表接口的记录总数。 |
data.page | int | 列表接口当前页码,从 1 开始。 |
data.pageSize | int | 列表接口当前页返回条数上限,范围为 1 到 100。 |
data.items | NotePackage[] | 列表接口当前页便签包或便签夹数据。 |
id | guid | 便签包或便签夹资源标识。 |
name | string | 便签包或便签夹名称。 |
content | string | 便签包备注;便签夹没有备注时为空字符串。 |
parentId | guid | null | 父便签包或便签夹标识;根节点为 null。 |
folderType | int | null | 便签夹象限类型;便签包不适用时为 null。 |
isStarred | bool | 当前操作员工是否已关注。 |
canEdit | bool | 当前操作员工是否具备编辑权限。 |
canDelete | bool | 当前操作员工是否具备删除权限。 |
canSend | bool | 当前操作员工是否具备发送权限。 |
createdAt | string | 创建时间,ISO 8601 带时区字符串。 |
updatedAt | string | null | 最后更新时间,ISO 8601 带时区字符串;未更新时可能为空或 null。 |
GET /api/openplatform/notePackages/{id} 返回一个 NotePackage 对象;/tree、/tree/all 返回同一对象结构的树形数组,并通过 children(NotePackage[])表示子节点。便签包或便签夹 action:delete、deleteFolder、edit、editFolder、singleEdit、star、share、cancelShare、editPermission、toPackage、toNote、toPlan、move。
路径中的 {id} 为便签包或便签夹 Id。除下表标明的参数外,动作请求体传空对象 {}。员工参数必须使用当前 API Key 下的 virtualId。
| action | 请求体示例 | 参数说明 |
|---|---|---|
delete | {} | 无请求参数。删除当前便签包。 |
deleteFolder | {} | 无请求参数。删除当前便签夹。 |
edit | { "name": "新的包名称", "content": "新的备注" } | name 必填,content 可选。修改便签包名称和备注。 |
editFolder | { "name": "新的夹名称", "noteType": 1 } | name 必填;noteType 可选,象限取值 1 到 4。 |
singleEdit | { "noteType": 1, "content": "新的名称" } | noteType 和 content 必填。noteType=1 修改名称,noteType=2 修改备注。 |
star | {} | 无请求参数。便签包仅允许创建人切换关注状态。 |
share | { "sharedEmployeeVirtualIds": ["员工 virtualId"], "canEdit": true, "canDelete": false, "canSend": false } | sharedEmployeeVirtualIds 必填;权限布尔值可选,省略时按 false 处理。 |
cancelShare | { "sharedEmployeeVirtualIds": ["员工 virtualId"] } | sharedEmployeeVirtualIds 必填,要取消共享的员工列表。 |
editPermission | { "sharedEmployeeVirtualIds": ["员工 virtualId"], "canEdit": true, "canDelete": false, "canSend": true } | sharedEmployeeVirtualIds 必填,通常传一个共享员工;三个权限字段用于修改共享权限。 |
toPackage | {} | 无请求参数。将当前便签夹转换为便签包。 |
toNote | { "noteType": 1 } | noteType 可选,目标便签象限取值 1 到 4,默认 1。 |
toPlan | { "noteType": 1, "projectId": "项目 Guid", "planTask": "[{\"groupId\":\"分组 Guid\",\"taskList\":[\"便签 Guid\"]}]" } | projectId 必填;noteType 为 1:只转入选中的便签,2:按便签包范围校验并转入包内选中的便签;packageId 可选,省略时使用路径中的 {id};planTask 为 JSON 字符串。 |
move | { "sourceId": "源便签包或夹 Guid", "targetId": "目标便签包或夹 Guid", "targetPosition": 1 } | sourceId、targetId 必填;targetPosition 可选,象限取值 1 到 4,默认 1。 |
delete、deleteFolder、share、cancelShare 为队列型操作,返回成功只表示请求已受理;最终结果请通过详情或 Webhook 确认。virtualId 或 *VirtualIds。员工对象只返回公开展示字段和 virtualId,不会返回手机号、账号、部门内部 Id 或真实员工 Guid。请求中涉及员工身份时,请使用当前 API Key 对应的 /employees 接口返回的公开标识。