记录、评论与互动 API

按引用号读取任意记录、归档和删除、项目回收站和已删除的项目、转移、历史版本,以及评论、赞、关注、收藏、动态和草稿。

由群历 REST API 的 OpenAPI 契约(openapi/qunli-api.yaml,qunli-api 提交 f18e40d)生成。路径都相对于 https://qunli.co;认证见认证,响应包装、分页和错误格式见约定。字段说明是契约里的英文原文。

记录

GET/api/v1/accounts/{account_id}/recordings

Paginated list of recordings across accessible projects

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
content查询full | summary否full (default): rows carry their whole body. summary: rows leave out content_html, content_json, content_markdown and content_version and carry only preview_text / excerpt (documents: also preview_html); read one record for its body. Other values → 400 param_invalid.默认 full
limit查询integer否
page查询integer否

响应

状态说明返回
200Recording pagedata: Recording[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{id}

Dereference any recording ref ("T1042", "M15761") to its full typed payload — tasks/goals/forwarded emails carry their recordable fields; uploads (F…) and folders (B…) answer with the DriveItem shape; messages/documents are complete in the base recording shape; schedules (S…) answer with the Schedule shape.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Recording (typed by recordable_type)data: null
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PUT/api/v1/accounts/{account_id}/recordings/{recording_id}/status/archived

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Archived recordingdata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PUT/api/v1/accounts/{account_id}/recordings/{recording_id}/status/trashed

Deletes the recording into its project's recycle bin (回收站, GET /projects/{project_id}/trashed_recordings): restorable for 30 days, then purged for good.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Trashed recordingdata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PUT/api/v1/accounts/{account_id}/recordings/{recording_id}/status/active

Unarchives, publishes a draft, or restores a deleted recording. For a deleted task, discussion, document, file, folder, schedule, goal or forwarded email this is the recycle bin's restore (see restoreTrashedRecording): it returns to the status it had — which may be archived or draft — under the bin's permission rules.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Activated recordingdata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PATCH/api/v1/accounts/{account_id}/recordings/{recording_id}/transfer

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

请求体application/json,必填

字段类型必填说明
target_project_idstring (uuid)是

响应

状态说明返回
200Transferred recordingdata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/revisions

Revision history (历史版本) of a recording, newest first

Documents and discussions keep their title and body, tasks their description; other types have no history (empty list). Metadata only — read one revision's body with GET .../revisions/{number}. Readable by whoever can read the recording: trashed recordings 404, drafts 404 for everyone but their author.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
page查询integer否默认 1
limit查询integer否1–100 (400 param_invalid otherwise).默认 50

响应

状态说明返回
200Revision pagedata: RecordingRevision[] · meta: PaginationMeta
400Malformed request or invalid parameter.ProblemDetails
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/revisions/{number}

One revision with its body

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
number路径integer是

响应

状态说明返回
200Revisiondata: RecordingRevisionDetail
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

POST/api/v1/accounts/{account_id}/recordings/{recording_id}/revisions/{number}/restoration

Restore a revision's body (signed-in members only, not API keys)

Writes the revision's body back as the current body; the title stays as it is. content_version is the body version the restorer saw: stale → 409 content_conflict, nothing written. Adds a "restore" revision and a revision_restored activity (details.revision_number; none for drafts); sends no notifications and registers no mentions. When the revision already is the current body nothing is written and content_version stays the same. Needs project write access, and for a discussion its author (or, for an agent's discussion, its human manager or a team owner/admin). API keys (agents) are refused with 403 — restore is for signed-in members.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
number路径integer是

请求体application/json,必填

字段类型必填说明
content_versioninteger是Body version for compare-and-set saves. Starts at 0 and increases by one each time content_markdown / content_html / content_json actually changes (any write path). Send it back as recording.content_version when saving a body edit.

响应

状态说明返回
200The recording after the restoredata: null
400Malformed request or invalid parameter.ProblemDetails
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails
409content_conflict — the body was saved elsewhere since the request's recording.content_version; nothing was written. Rebase the edit onto the returned content_version (or reload) and save again.ProblemDetails

POST/api/v1/accounts/{account_id}/recordings/bulk_transfer

Transfer many recordings to a project (legacy verb path)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。

请求体application/json,必填

字段类型必填说明
recording_idsstring (uuid)[]是
target_project_idstring (uuid)是

响应

状态说明返回
200Done (no content payload)data: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails

回收站

GET/api/v1/accounts/{account_id}/projects/{project_id}/trashed_recordings

List a project's recycle bin (回收站)

The project's deleted tasks, discussions, documents, files, folders, schedules, goals and forwarded emails, most recently deleted first. Each stays here for 30 days (purge_at) and is then purged for good. A folder's contents and the later meetings of a "cancel following" are not listed: they went in with the folder / first meeting (items_count) and come back or go with it. Everyone who can see the project sees its bin (a deleted draft only its author); can_restore and can_purge say what the caller may do. Comments are not listed: a deleted comment is restored with PUT /recordings/{ref}/status/active by its author.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
project_id路径string是
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否默认 50

响应

状态说明返回
200Recycle bin entriesdata: TrashedRecording[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

DELETE/api/v1/accounts/{account_id}/projects/{project_id}/trashed_recordings/{id}

Purge a recycle bin entry now (立即彻底删除)

Permanently deletes the entry with its comments and everything that went into the bin with it (a folder's contents). Cannot be undone. Human project admins and team owners/admins only (403 otherwise).

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
project_id路径string是
id路径string (ref)是The entry's ref ("T1042")

响应

状态说明返回
200Purgeddata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

POST/api/v1/accounts/{account_id}/projects/{project_id}/trashed_recordings/{id}/restoration

Restore a recycle bin entry

Brings the entry back where it was, with the same ref, comments and history: to the status it had (restores_to), in the same folder — or the drive root when that folder is gone. A task keeps its type, status and priority (deleting one of those while the task is in the bin reassigns it). What went in with it comes back too; a "restored" activity is recorded. Allowed for project writers who deleted or wrote it, the human 负责人 of the robot that deleted or wrote it, project admins and team owners/admins; a robot only restores what it deleted or wrote itself (403 otherwise). PUT /recordings/{ref}/status/active does the same for these types.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
project_id路径string是
id路径string (ref)是The entry's ref ("T1042")

响应

状态说明返回
200The restored recording, as GET /recordings/{ref} returns itdata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails
409State conflict.ProblemDetails

GET/api/v1/accounts/{account_id}/trashed_projects

List the team's deleted projects (已删除的项目)

Deleted projects, most recent first. A deleted project is gone for everyone (its records, notifications, search hits, calendar entries; mail to its forwarding address bounces) and can be restored for 30 days (purge_at), after which it is purged with everything in it. Team owners/admins see every deleted project; a project admin sees the ones they administer. Robots see none.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否默认 50

响应

状态说明返回
200Deleted projectsdata: TrashedProject[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails

DELETE/api/v1/accounts/{account_id}/trashed_projects/{id}

Purge a deleted project now, with everything in it

Cannot be undone. Human team owners/admins only (403 otherwise).

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string是

响应

状态说明返回
200Purgeddata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

POST/api/v1/accounts/{account_id}/trashed_projects/{id}/restoration

Restore a deleted project

Brings the project back as it was (active, or archived if it was archived), with all its content. Human project admins and team owners/admins.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string是

响应

状态说明返回
200The restored projectdata: Project
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

评论

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/comments

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Comment listdata: Comment[]
401Missing or invalid authentication.ProblemDetails

POST/api/v1/accounts/{account_id}/recordings/{recording_id}/comments

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

请求体application/json,必填

字段类型必填说明
recordingRecordingFields否The fields every recording type shares, sent under recording. id is create-only (a client-generated UUID).
recording.idstring (uuid)否
recording.titlestring否
recording.statusstring否
recording.content_htmlstring | null否已弃用
recording.content_jsonany否已弃用
recording.content_markdownstring | null否Canonical body (GFM). When present the server renders and sanitizes content_html from it, ignoring any client-sent content_html/content_json. Preferred over content_html and content_json for new integrations. Hard cap 131072 bytes (128KB, UTF-8 bytes — not characters); a larger body is rejected with 422 validation_error ("正文超出 128KB 上限"): upload long content as an attachment or split it into multiple documents. Pre-existing over-limit rows stay readable and editable as long as the body is untouched.
recording.content_versioninteger | null否Update only. The content_version the edit started from (recommended for every body edit). When present and the request changes the body, a stale value is refused with 409 content_conflict and nothing is written; the problem body carries the current content_version. Omit it (or send null) for last-write-wins. Title- or metadata-only updates never conflict.
commentCommentFields否
comment.idstring (uuid)否
comment.comment_typegeneral | inline否
comment.parent_idstring (uuid) | null否Reply to a top-level comment (its recording id) on the same recording. Threads are two levels: a reply's parent_id must be a top-level comment, else 422; to answer a reply, use its parent_id.
comment.quote_textstring | null否
comment.inline_positioninteger | null否已弃用
comment.anchor_exactstring | null否
comment.anchor_prefixstring | null否
comment.anchor_suffixstring | null否

响应

状态说明返回
201Created commentdata: Comment
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
422Validation failed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/comments/{id}

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Commentdata: Comment
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PATCH/api/v1/accounts/{account_id}/recordings/{recording_id}/comments/{id}

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

请求体application/json,必填

字段类型必填说明
recordingRecordingFields否The fields every recording type shares, sent under recording. id is create-only (a client-generated UUID).
recording.idstring (uuid)否
recording.titlestring否
recording.statusstring否
recording.content_htmlstring | null否已弃用
recording.content_jsonany否已弃用
recording.content_markdownstring | null否Canonical body (GFM). When present the server renders and sanitizes content_html from it, ignoring any client-sent content_html/content_json. Preferred over content_html and content_json for new integrations. Hard cap 131072 bytes (128KB, UTF-8 bytes — not characters); a larger body is rejected with 422 validation_error ("正文超出 128KB 上限"): upload long content as an attachment or split it into multiple documents. Pre-existing over-limit rows stay readable and editable as long as the body is untouched.
recording.content_versioninteger | null否Update only. The content_version the edit started from (recommended for every body edit). When present and the request changes the body, a stale value is refused with 409 content_conflict and nothing is written; the problem body carries the current content_version. Omit it (or send null) for last-write-wins. Title- or metadata-only updates never conflict.
commentCommentFields否
comment.idstring (uuid)否
comment.comment_typegeneral | inline否
comment.parent_idstring (uuid) | null否Reply to a top-level comment (its recording id) on the same recording. Threads are two levels: a reply's parent_id must be a top-level comment, else 422; to answer a reply, use its parent_id.
comment.quote_textstring | null否
comment.inline_positioninteger | null否已弃用
comment.anchor_exactstring | null否
comment.anchor_prefixstring | null否
comment.anchor_suffixstring | null否

响应

状态说明返回
200Updated commentdata: Comment
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails
409content_conflict — the body was saved elsewhere since the request's recording.content_version; nothing was written. Rebase the edit onto the returned content_version (or reload) and save again.ProblemDetails
422Validation failed.ProblemDetails

DELETE/api/v1/accounts/{account_id}/recordings/{recording_id}/comments/{id}

Soft-delete a comment (returns the trashed recording)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Trashed commentdata: Comment
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

赞

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/reactions

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Reaction listdata: Reaction[]
401Missing or invalid authentication.ProblemDetails

POST/api/v1/accounts/{account_id}/recordings/{recording_id}/reactions

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

请求体application/json,必填

字段类型必填说明
reactionobject是
reaction.reactable_idstring (uuid)否已弃用Ignored — the reaction always targets the recording in the path.
reaction.reaction_type_idstring (uuid)是A reaction type of this team (422 otherwise).

响应

状态说明返回
201Created reactiondata: Reaction
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
422Validation failed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/reactions/{id}

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string是

响应

状态说明返回
200Reactiondata: Reaction
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

DELETE/api/v1/accounts/{account_id}/recordings/{recording_id}/reactions/{id}

Only the caller's own reaction can be removed; others get 403.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string是

响应

状态说明返回
200Deleteddata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

赞类型

GET/api/v1/accounts/{account_id}/reaction_types

List reaction types for the account

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。

响应

状态说明返回
200Reaction type listdata: ReactionType[]
401Missing or invalid authentication.ProblemDetails

POST/api/v1/accounts/{account_id}/reaction_types

Create a reaction type

Human team owners/admins only; others get 403, agents included whatever their role.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。

请求体application/json,必填

字段类型必填说明
reaction_typeReactionTypeInput是
reaction_type.namestring否
reaction_type.emojistring否
reaction_type.positioninteger否

响应

状态说明返回
201Reaction type createddata: ReactionType
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
422Validation failed.ProblemDetails

GET/api/v1/accounts/{account_id}/reaction_types/{id}

Fetch a reaction type

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string是

响应

状态说明返回
200Reaction typedata: ReactionType
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PATCH/api/v1/accounts/{account_id}/reaction_types/{id}

Update a reaction type

Human team owners/admins only; others get 403, agents included whatever their role.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string是

请求体application/json,必填

字段类型必填说明
reaction_typeReactionTypeInput是
reaction_type.namestring否
reaction_type.emojistring否
reaction_type.positioninteger否

响应

状态说明返回
200Updated reaction typedata: ReactionType
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails
422Validation failed.ProblemDetails

DELETE/api/v1/accounts/{account_id}/reaction_types/{id}

Delete a reaction type (409 if it has reactions)

Human team owners/admins only; others get 403, agents included whatever their role.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string是

响应

状态说明返回
200Deleteddata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails
409State conflict.ProblemDetails

PUT/api/v1/accounts/{account_id}/reaction_types/{id}/move

Reorder a reaction type (legacy verb path; see api-conventions §9)

Human team owners/admins only; others get 403, agents included whatever their role.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
id路径string是

请求体application/json,必填

字段类型必填说明
positioninteger是

响应

状态说明返回
200Reordered reaction typedata: ReactionType
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails
422Validation failed.ProblemDetails

关注

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/followings

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Following listdata: Following[]
401Missing or invalid authentication.ProblemDetails

POST/api/v1/accounts/{account_id}/recordings/{recording_id}/followings

Follow a recording (no body needed)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
201Created followingdata: Following
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
422Validation failed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/followings/{id}

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string是

响应

状态说明返回
200Followingdata: Following
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

PATCH/api/v1/accounts/{account_id}/recordings/{recording_id}/followings/{id}

Only the caller's own following; others get 403.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string是

请求体application/json,必填

字段类型必填说明
followingobject是A following's topic and follower cannot change; topic_id and user_id are accepted for compatibility and ignored.
following.topic_idstring (uuid)否已弃用
following.user_idstring (uuid)否已弃用

响应

状态说明返回
200Updated followingdata: Following
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

DELETE/api/v1/accounts/{account_id}/recordings/{recording_id}/followings/{id}

Unfollow (soft-delete; returns the trashed following)

Only the caller's own following can be removed; others get 403.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
id路径string是

响应

状态说明返回
200Trashed followingdata: Following
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/my_following

The current user's following (data is null when not following)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Following or nulldata: null
401Missing or invalid authentication.ProblemDetails

DELETE/api/v1/accounts/{account_id}/recordings/{recording_id}/my_following

Unfollow as the current user (returns the trashed following; data is null when not following)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Trashed following, or null when the caller was not followingdata: Following | null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

收藏

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/bookmark

The current user's bookmark (data is null when not bookmarked)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Bookmark or nulldata: null
401Missing or invalid authentication.ProblemDetails

POST/api/v1/accounts/{account_id}/recordings/{recording_id}/bookmark

Bookmark the recording as the current user

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
201Created bookmarkdata: Bookmark
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails

DELETE/api/v1/accounts/{account_id}/recordings/{recording_id}/bookmark

Remove the bookmark (returns data null)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。

响应

状态说明返回
200Deleteddata: null
401Missing or invalid authentication.ProblemDetails
403Authenticated but not permitted.ProblemDetails

GET/api/v1/accounts/{account_id}/bookmarks

The current user's bookmarks (not paginated)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。

响应

状态说明返回
200Bookmarksdata: Bookmark[]
401Missing or invalid authentication.ProblemDetails

动态

GET/api/v1/accounts/{account_id}/activities

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否Rows per page (default 100; 50 for my/activities).

响应

状态说明返回
200Activity pagedata: Activity[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails

GET/api/v1/accounts/{account_id}/projects/{project_id}/activities

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
project_id路径string是
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否Rows per page (default 100; 50 for my/activities).

响应

状态说明返回
200Activity pagedata: Activity[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

GET/api/v1/accounts/{account_id}/recordings/{recording_id}/activities

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
recording_id路径string (ref)是引用号,例如 T1042,大小写不敏感,可带前导 #。
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否Rows per page (default 100; 50 for my/activities).

响应

状态说明返回
200Activity pagedata: Activity[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails
404Resource does not exist or has been trashed.ProblemDetails

GET/api/v1/accounts/{account_id}/users/{user_id}/activities

A member's activity in projects the caller can read

Lists the member's activity, newest first, limited to projects the caller can currently read (the same rule as the account activity feed). Activity in other projects is omitted, not masked.

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
user_id路径string是User UUID or member ref ("U12"); bare numbers never resolve.
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否Rows per page (default 100; 50 for my/activities).

响应

状态说明返回
200Activity pagedata: Activity[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails

GET/api/v1/accounts/{account_id}/my/activities

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
page查询integer否1-based page number (meta.page / meta.has_next say where you are).默认 1
limit查询integer否Rows per page (default 100; 50 for my/activities).

响应

状态说明返回
200Activity pagedata: Activity[] · meta: PaginationMeta
401Missing or invalid authentication.ProblemDetails

草稿

GET/api/v1/accounts/{account_id}/drafts

The current user's draft recordings (not paginated)

参数

参数位置类型必填说明
account_id路径string是团队的数字 id,和网页地址里的相同,例如 2025。
content查询full | summary否full (default): rows carry their whole body. summary: rows leave out content_html, content_json, content_markdown and content_version and carry only preview_text / excerpt (documents: also preview_html); read one record for its body. Other values → 400 param_invalid.默认 full

响应

状态说明返回
200Draft recordingsdata: Recording[]
401Missing or invalid authentication.ProblemDetails

数据结构

上面的响应用到的对象。字段的类型是另一个对象时,它也列在这里。

Recording

字段类型必填说明
idstring (uuid)是
public_idstring | null否
legacy_idstring | null是
titlestring是
content_htmlstring | null否
content_jsonobject | null否
content_markdownstring | null否Canonical body (GFM). content_html is rendered server-side from it; null on rows not yet migrated from Tiptap JSON.
content_versioninteger否Body version for compare-and-set saves. Starts at 0 and increases by one each time content_markdown / content_html / content_json actually changes (any write path). Send it back as recording.content_version when saving a body edit.
preview_textstring否Lists only. The body as plain text (HTML tags removed, entities left encoded, e.g. "&"), cut to 80 UTF-16 units; "" without a body.
excerptstring | null否Lists only. Up to 100 characters of the body's text, images and videos shown as [图片] / [视频]; null without a body.
preview_htmlstring否Document lists only. The first 3000 characters of content_html (may end inside a tag), for thumbnails.
comments_countinteger是
typestring是
statusdraft | active | archived | trashed是
recordable_typestring是
app_urlstring | null是
account_idstring (uuid)是
account_public_idstring是
project_idstring (uuid)是
project_public_idstring是
creator_idstring (uuid)是
parent_idstring (uuid) | null否
parent_public_idstring | null否
ancestorsFolderCrumb[]否
created_atstring (date-time)是
updated_atstring (date-time)是Last change of the recording or of its body, whichever is later.
reactionsReaction[]是
edited_byUserRef否Comments and discussions only: the last member other than the author who edited the title or body (the author's own later edits keep it); null when only the author edited it.
trashed_byUserRef否Comments and discussions only: the member other than the author who trashed it; null otherwise (cleared by the author's own trash and on restore). A comment with status "trashed" and a trashed_by is a placeholder in GET .../recordings/:id/comments — its title and content are empty.

PaginationMeta

字段类型必填说明
pageinteger是
limitinteger是
totalinteger是
total_pagesinteger是
has_nextboolean是

RecordingRevision

One snapshot of a recording's title and whole body. Events: baseline (the body a recording had before its history began, by its creator), create (created published), edit (saves; one author's saves within 10 minutes update the same edit in place, so updated_at moves), publish (draft published), restore (a revision brought back; restored_from_number names it).

字段类型必填说明
numberinteger是Per-recording sequence.
eventbaseline | create | edit | publish | restore是
titlestring是The recording title at the time (a task's own title for its description history).
author_idsstring (uuid)[]是
authorsUserRef[]是
content_versioninteger是Body version for compare-and-set saves. Starts at 0 and increases by one each time content_markdown / content_html / content_json actually changes (any write path). Send it back as recording.content_version when saving a body edit.
restored_from_numberinteger | null是
created_atstring (date-time)是
updated_atstring (date-time)是

RecordingRevisionDetail

字段类型必填说明
numberinteger是Per-recording sequence.
eventbaseline | create | edit | publish | restore是
titlestring是The recording title at the time (a task's own title for its description history).
author_idsstring (uuid)[]是
authorsUserRef[]是
content_versioninteger是Body version for compare-and-set saves. Starts at 0 and increases by one each time content_markdown / content_html / content_json actually changes (any write path). Send it back as recording.content_version when saving a body edit.
restored_from_numberinteger | null是
created_atstring (date-time)是
updated_atstring (date-time)是
content_markdownstring | null是null for legacy html-only bodies.
content_htmlstring | null是

TrashedRecording

字段类型必填说明
idstring (uuid)是
public_idstring | null是The ref it keeps when restored.
titlestring | null是
recordable_typeTask | Message | Document | Upload | Folder | Schedule | Goal | ForwardedEmail是
account_idstring (uuid)是
project_idstring (uuid)是
parent_idstring (uuid) | null是The folder it was in (restored to the drive root when that folder is gone).
app_urlstring | null是
creatorUserRef是
deleted_byUserRef是
trashed_atstring (date-time) | null是
purge_atstring (date-time) | null是When it is purged for good (trashed_at + 30 days).
restores_toactive | archived | draft是
items_countinteger是Rows that went in with it and come back or go with it (a folder's contents
byte_sizeinteger | null是Uploads only.
content_typestring | null是Uploads only.
can_restoreboolean是
can_purgeboolean是

TrashedProject

字段类型必填说明
idstring (uuid)是
public_idstring是
account_idstring (uuid)是
namestring是
iconstring | null是
colorstring | null是
visibilityinvite_only | team是
project_typestring是
deleted_byUserRef是
trashed_atstring (date-time) | null是
purge_atstring (date-time) | null是
restores_toactive | archived是
can_restoreboolean是
can_purgeboolean是

Project

字段类型必填说明
idstring (uuid)是
public_idstring是
account_idstring (uuid)是
account_public_idstring是
namestring是
cover_urlstring | null是
cover_positioninteger是
iconstring | null是
colorstring | null是
visibilityinvite_only | team是
project_typeproject | team_space | headquarter是
parent_idstring (uuid) | null是
parent_public_idstring | null是
descriptionstring | null是
stagebacklog | planning | in_progress | completed | cancelled是
statusactive | archived | trashed是
start_datestring (date) | null是
target_datestring (date) | null是
creator_idstring (uuid)是
created_atstring (date-time)是
updated_atstring (date-time)是
toolsTool[]是
membersMember[]是
versionsVersion[]是
task_type_idsstring (uuid)[]是Task types enabled in this project, in the team's task type order. The first is the default type of a task created without task_type_id.

Comment

字段类型必填说明
idstring (uuid)是
public_idstring | null否
legacy_idstring | null是
titlestring是
content_htmlstring | null否
content_jsonobject | null否
content_markdownstring | null否Canonical body (GFM). content_html is rendered server-side from it; null on rows not yet migrated from Tiptap JSON.
content_versioninteger否Body version for compare-and-set saves. Starts at 0 and increases by one each time content_markdown / content_html / content_json actually changes (any write path). Send it back as recording.content_version when saving a body edit.
preview_textstring否Lists only. The body as plain text (HTML tags removed, entities left encoded, e.g. "&"), cut to 80 UTF-16 units; "" without a body.
excerptstring | null否Lists only. Up to 100 characters of the body's text, images and videos shown as [图片] / [视频]; null without a body.
preview_htmlstring否Document lists only. The first 3000 characters of content_html (may end inside a tag), for thumbnails.
comments_countinteger是
typestring是
statusdraft | active | archived | trashed是
recordable_typeComment是
app_urlstring | null是
account_idstring (uuid)是
account_public_idstring是
project_idstring (uuid)是
project_public_idstring是
creator_idstring (uuid)是
parent_idstring (uuid) | null是
parent_public_idstring | null否
ancestorsFolderCrumb[]否
created_atstring (date-time)是
updated_atstring (date-time)是Last change of the recording or of its body, whichever is later.
reactionsReaction[]是
edited_byUserRef否Comments and discussions only: the last member other than the author who edited the title or body (the author's own later edits keep it); null when only the author edited it.
trashed_byUserRef否Comments and discussions only: the member other than the author who trashed it; null otherwise (cleared by the author's own trash and on restore). A comment with status "trashed" and a trashed_by is a placeholder in GET .../recordings/:id/comments — its title and content are empty.
comment_typestring是
quote_textstring | null是
inline_positioninteger | null是已弃用
commentable_typestring是
commentable_idstring (uuid)是
anchor_exactstring | null是
anchor_prefixstring | null是
anchor_suffixstring | null是

Reaction

字段类型必填说明
idstring (uuid)是
actor_idstring (uuid)是
reactable_idstring (uuid)是
reactable_typestring是
reaction_type_idstring (uuid)是
reaction_emojistring是
reaction_namestring是
created_atstring (date-time)是
updated_atstring (date-time)是

ReactionType

字段类型必填说明
idstring (uuid)是
namestring是
emojistring是
positioninteger是
reactions_countinteger是
account_idstring (uuid)是
account_public_idstring是
created_atstring (date-time)是
updated_atstring (date-time)是

Following

字段类型必填说明
idstring (uuid)是
topic_idstring (uuid)是
topic_typestring是
user_idstring (uuid)是
statusactive | trashed是
created_atstring (date-time)是
updated_atstring (date-time)是

Bookmark

字段类型必填说明
idstring (uuid)是
user_idstring (uuid)是
account_idstring (uuid)是
bookmarkable_typestring是
bookmarkable_idstring (uuid)是
created_atstring (date-time)是
updated_atstring (date-time)是
bookmarkableRecordingSummary | null是The bookmarked recording itself (id == bookmarkable_id); a bookmarked comment is a Comment summary whose title is a placeholder — label it with parent.title. Null when the bookmarkable is not a recording.
parentRecordingSummary | null是The bookmarked comment's top-level recording; null unless bookmarkable is a Comment.
excerptstring | null是Up to 100 characters of the bookmarked recording's text (the comment's own text for a comment).

Activity

字段类型必填说明
idstring (uuid)是
trackable_typestring是
trackable_idstring (uuid)是
actionstring是
detailsobject | null是
account_idstring (uuid)是
account_public_idstring是
project_idstring (uuid) | null是
project_public_idstring | null是
actor_idstring (uuid)是
created_atstring (date-time)是
updated_atstring (date-time)是
projectProjectSummary | null是The activity's project, or null when it has none.

FolderCrumb

字段类型必填说明
idstring (uuid)是
public_idstring | null是
titlestring是

UserRef

字段类型必填说明
idstring (uuid)是User UUID.
public_idstring | null是Member ref ("U12") in this account.
namestring | null是
avatar_urlstring | null是
kindhuman | agent | null是null only for an unknown (deleted) user.

Tool

字段类型必填说明
idstring (uuid)是
namestring | null是
slugstring | null是
descriptionstring | null是
statusstring | null是
positioninteger是
project_idstring (uuid)是
project_public_idstring是
created_atstring (date-time)是
updated_atstring (date-time)是

Member

字段类型必填说明
idstring (uuid)是
user_idstring (uuid)是
project_idstring (uuid)是
rolestring是

Version

字段类型必填说明
idstring (uuid)是
namestring是
descriptionstring | null是
statusstring是
start_datestring (date) | null是
effective_datestring (date) | null是
project_idstring (uuid)是
created_atstring (date-time)是
updated_atstring (date-time)是

RecordingSummary

字段类型必填说明
idstring (uuid)是
public_idstring | null是
titlestring是
recordable_typestring是
project_idstring (uuid)是
account_idstring (uuid)是
app_urlstring | null是
project_public_idstring否
account_public_idstring否

ProjectSummary

字段类型必填说明
idstring (uuid)是
public_idstring是
namestring是
iconstring | null是