创建MR检视意见
功能介绍
为代码创建MR检视意见
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
URI
POST /v2/repositories/{repository_id}/merge_requests/{merge_request_iid}/discussions
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
repository_id |
是 |
Integer |
参数解释: 仓库id。 约束限制: 必传。 取值范围: 最小值:1 最大值:2147483647 |
merge_request_iid |
是 |
Integer |
参数解释: 合并请求iid(仓库的第几个mr)。 约束限制: 必传。 取值范围: 最小值:1 最大值:2147483647 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
参数解释: 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 约束限制: 必传。 取值范围: 字符串长度不少于1,不超过10万。 默认取值: 不涉及。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
body |
是 |
String |
参数解释: 检视意见内容。 约束限制: 必传。 取值范围: 长度限制:8000字符。 字符限制:unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符。 blank限制:不能为null或空字符串或全是空格。 |
severity |
否 |
String |
参数解释: 严重程度,非建议级别意见指派人和MR/Commit作者不能点解决。 取值范围: (不传或不为枚举值,默认为suggestion)
|
assignee_id |
否 |
String |
参数解释: 指派人id,可传用户id或用户名。 取值范围: 长度为[0,255]个字符。 |
review_categories |
否 |
String |
参数解释: 检视意见分类。 约束限制: 仅可使用设置里配置的分类,配置方法:设置->检视意见。 |
review_modules |
否 |
String |
参数解释: 检视意见模块。 约束限制: 仅可使用设置里配置的模块,配置方法:设置->检视意见。 |
proposer_id |
否 |
String |
参数解释: 检视人id,可传用户id或用户名。 取值范围: 长度为[0,255]个字符。 |
position |
否 |
PositionDto object |
参数解释: 代码位置信息:意见关联何处代码 。 取值范围: 无。 |
lineTypes |
否 |
String |
参数解释: 所关联的代码行的类型。 取值范围:
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
base_sha |
否 |
String |
参数解释: 源分支base提交节点。 取值范围: 只能为数字和字母,长度为40字符。 |
start_sha |
否 |
String |
参数解释: 目标分支最新提交节点。 取值范围: 只能为数字和字母,长度为40字符。 |
head_sha |
否 |
String |
参数解释: 源分支最新提交节点。 取值范围: 只能为数字和字母,长度为40字符。 |
old_path |
否 |
String |
参数解释: 修改前文件路径。 取值范围: 无。 |
new_path |
否 |
String |
参数解释: 修改后文件路径。 取值范围: 无。 |
position_type |
否 |
String |
参数解释: 变更类型。 取值范围: 无。 默认取值: text。 |
old_line |
否 |
Integer |
参数解释: 修改前行号,小于等于0或为null,表示此行为新增行,即对比时位于右侧,绿色显示。 取值范围: -1-2147483647或为null。 |
new_line |
否 |
Integer |
参数解释: 修改后行号。 小于等于0或为null,表示此行为删除行,即对比时位于左侧,红色显示。 取值范围: -1-2147483647或为null。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
error |
Error object |
参数解释: 响应错误码 |
result |
MergeRequestDiscussionDto object |
参数解释: 返回新建检视意见的相关信息。 取值范围: 无。 |
status |
String |
参数解释: 响应状态。 取值范围:
|
参数 |
参数类型 |
描述 |
---|---|---|
code |
String |
参数解释: 调用此接口失败时返回的错误码。 取值范围:
|
message |
String |
参数解释: 调用此接口失败时返回的提示信息。 取值范围:
|
参数 |
参数类型 |
描述 |
---|---|---|
id |
String |
参数解释: 主评论和回复共用的id,一般称为discussion_id。 取值范围: 只能为数字和字母,长度为40字符。 |
individual_note |
Boolean |
参数解释: 是否为个人意见,即不需要他人解决的意见。 取值范围:
|
notes |
Array of NoteDto objects |
参数解释: 主评论和回复列表,主评论为第一个(此接口为新建主评论,所以数量为1)。 取值范围: 无。 |
project_id |
Integer |
参数解释: 仓库id 取值范围: 最小值:1 最大值:2147483647 |
noteable_type |
String |
参数解释: 意见类型。 取值范围:
|
commit_id |
String |
参数解释: 关联的提交id:noteable_type为Commit的检视意见的特有字段,为此次提交的sha值。 取值范围: 只能为数字和字母,长度为40字符。 |
project_full_path |
String |
参数解释: 仓库路径。 取值范围: 无。 |
a_mode |
String |
参数解释: 关联文件变更前文件的文件模式,如果为新增文件此处为0。 取值范围: git支持的文件权限数字,例如:100644,100755,120000,160000等。 |
b_mode |
String |
参数解释: 变更后文件的文件模式,如果为删除文件此处为0。 取值范围: git支持的文件权限数字,例如:100644,100755,120000,160000等。 |
deleted_file |
Boolean |
参数解释: 关联文件是否是删除文件。 取值范围:
|
new_file |
Boolean |
参数解释: 关联文件是否是新增文件。 取值范围:
|
resolved |
Boolean |
参数解释: 检视意见是否已解决。 取值范围:
|
archived |
Boolean |
参数解释: 检视意见是否已归档,归档后不允许编辑删除回复解决该意见。 取值范围:
|
review_categories |
String |
参数解释: 检视意见分类的key。 自定义分类的review_categories、review_categories_cn、review_categories_en一致。 取值范围: 无。 |
review_categories_cn |
String |
参数解释: 检视意见分类的中文名。 自定义分类的review_categories、review_categories_cn一致。 取值范围: 无。 |
review_categories_en |
String |
参数解释: 检视意见分类的英文名。 自定义分类的review_categories、review_categories_en一致。 取值范围: 无。 |
review_modules |
String |
参数解释: 检视意见模块。 取值范围: 无。 |
severity |
String |
参数解释: 检视意见严重程度的key。 取值范围:
|
severity_cn |
String |
参数解释: 严重程度中文名。 取值范围:
|
severity_en |
String |
参数解释: 严重程度英文名。 取值范围:
|
assignee |
UserBasicDto object |
参数解释: 指派人详细信息。 取值范围: 无。 |
proposer |
UserBasicDto object |
参数解释: 提出人详细信息。 取值范围: 无。 |
merge_request_version_params |
MergeRequestVersionParamsDto object |
参数解释: MR版本详细信息。 取值范围: 无。 |
diff_file |
String |
参数解释: 变更文件路径。 取值范围: 无。 |
added_lines |
Integer |
参数解释: 新增行数。 取值范围: 最小值:0 最大值:2147483647 |
removed_lines |
Integer |
参数解释: 删除行数。 取值范围: 最小值:0 最大值:2147483647 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
Integer |
参数解释: 评论id,主评论和回复不共用。 取值范围: 最小值:1 最大值:2147483647 |
type |
String |
参数解释: note类型。 取值范围:
|
body |
String |
参数解释: 检视意见内容。 取值范围: 长度限制:8000字符。 字符限制:unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符。 blank限制:不能为null或空字符串或全是空格。 |
attachment |
String |
参数解释: 附件(废弃字段)。 取值范围: 无。 |
author |
UserBasicDto object |
参数解释: 作者详细信息。 取值范围: 无。 |
created_at |
String |
参数解释: 创建时间。 约束限制: 格式:yyyy-MM-ddTHH:mm:ss.SSS+08:00 |
updated_at |
String |
参数解释: 更新时间。 约束限制: 格式:yyyy-MM-ddTHH:mm:ss.SSS+08:00 |
system |
Boolean |
参数解释: 是否是系统生成的日志。 取值范围:
|
noteable_id |
Integer |
参数解释: MR的id。 取值范围: 最小值:1 最大值:2147483647 |
noteable_type |
String |
参数解释: 意见类型。 取值范围:
|
commit_id |
String |
参数解释: 关联的提交id:noteable_type为Commit的检视意见的特有字段,为此次提交的sha值。 取值范围: 只能为数字和字母,长度为40字符。 |
resolvable |
Boolean |
参数解释: 意见是否需要解决。 取值范围:
|
is_reply |
Boolean |
参数解释: 是否是回复的评论。 取值范围:
|
resolved_by |
UserBasicDto object |
参数解释: 检视意见的解决人。 取值范围: 无。 |
noteable_iid |
Integer |
参数解释: MR的iid,表示为该仓库第几个MR。 取值范围: 最小值:1 最大值:2147483647 |
discussion_id |
String |
参数解释: 检视意见id,主评论和回复共用。 取值范围: 只能为数字和字母,长度为40字符。 |
project |
String |
参数解释: 项目路径。 取值范围: 无。 |
diff_file |
String |
参数解释: 变更文件路径。 取值范围: 无。 |
diff |
String |
参数解释: 变更文件内容。 取值范围: 无。 |
archived |
Boolean |
参数解释: 检视意见是否已归档,归档后不允许编辑删除回复解决该意见。 取值范围:
|
review_categories |
String |
参数解释: 检视意见分类的key。 自定义分类的review_categories、review_categories_cn、review_categories_en一致。 取值范围: 无。 |
review_categories_cn |
String |
参数解释: 检视意见分类的中文名。 自定义分类的review_categories、review_categories_cn一致。 取值范围: 无。 |
review_categories_en |
String |
参数解释: 检视意见分类的英文名。 自定义分类的review_categories、review_categories_en一致。 取值范围: 无。 |
review_modules |
String |
参数解释: 检视意见模块。 取值范围: 无。 |
severity |
String |
参数解释: 严重程度,非建议级别意见指派人和MR/Commit作者不能点解决。 取值范围:
|
severity_cn |
String |
参数解释: 严重程度中文名。 取值范围:
|
severity_en |
String |
参数解释: 严重程度英文名。 取值范围:
|
file_path |
String |
参数解释: 文件路径(弃用)。 取值范围: 无。 |
line |
String |
参数解释: 行号(弃用)。 取值范围: 无。 |
assignee |
UserBasicDto object |
参数解释: 指派人详细信息。 取值范围: 无。 |
proposer |
UserBasicDto object |
参数解释: 检视人详细信息。 取值范围: 无。 |
position |
PositionDto object |
参数解释: 代码位置信息:意见关联何处代码 。 取值范围: 无。 |
resolved |
Boolean |
参数解释: 检视意见是否已解决。 取值范围:
|
is_outdated |
Boolean |
参数解释: 是否过时。 取值范围:
|
参数 |
参数类型 |
描述 |
---|---|---|
base_sha |
String |
参数解释: 源分支base提交节点。 取值范围: 只能为数字和字母,长度为40字符。 |
start_sha |
String |
参数解释: 源分支最新提交节点。 取值范围: 只能为数字和字母,长度为40字符。 |
head_sha |
String |
参数解释: 目标分支最新提交节点。 取值范围: 只能为数字和字母,长度为40字符。 |
old_path |
String |
参数解释: 修改前文件路径。 取值范围: 无。 |
new_path |
String |
参数解释: 修改后文件路径。 取值范围: 无。 |
position_type |
String |
参数解释: 变更类型。 取值范围: 无。 默认取值: text。 |
old_line |
Integer |
参数解释: 修改前行号,小于等于0或为null,表示此行为新增行,即对比时位于右侧,绿色显示。 取值范围: -1-2147483647或为null。 |
new_line |
Integer |
参数解释: 修改后行号。 小于等于0或为null,表示此行为删除行,即对比时位于左侧,红色显示。 取值范围: -1-2147483647或为null。 |
参数 |
参数类型 |
描述 |
---|---|---|
id |
Integer |
参数解释: 用户id。 取值范围: 最小值:1 最大值:2147483647 |
name |
String |
参数解释: 名字。 取值范围: 长度为[0,255]个字符。 |
username |
String |
参数解释: 用户名。 取值范围: 长度为[0,255]个字符。 |
state |
String |
参数解释: 状态。 取值范围: 长度为[0,255]个字符。 |
avatar_url |
String |
参数解释: 获取头像的url。 取值范围: 无。 |
avatar_path |
String |
参数解释: 获取头像的路径。 取值范围: 无。 |
|
String |
参数解释: 邮箱。 取值范围: 无。 |
name_cn |
String |
参数解释: 中文名。 约束限制: 此字段已弃用,取值同username。 取值范围: 无。 |
web_url |
String |
参数解释: 主页url。 取值范围: 无。 |
nick_name |
String |
参数解释: 昵称。 取值范围: 无。 |
tenant_name |
String |
参数解释: 租户名称。 取值范围: 无。 |
请求示例
POST https://{endpoint}/v2/repositories/{repository_id}/merge_requests/{merge_request_iid}/discussions { "body": "检视意见内容", "lineTypes": "new", "position": { "base_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be", "start_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be", "head_sha": "53c75fa88dc4e7d0b68d108b7f1ee0a5c4564f44", "position_type": "text", "new_path": "a.txt", "old_path": "a.txt", "new_line": 1, "old_line": -1 }, "assignee_id": 9124, "proposer_id": null, "severity": "suggestion", "review_modules": "模块", "review_categories": "分类" }
响应示例
状态码: 200
OK
{ "result": { "id": "996f57b8fdd5e62678b16f0ea4f91688405fa72f", "individual_note": false, "notes": [ { "id": 2111974336, "type": "DiffNote", "body": "检视意见内容", "author": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "created_at": "2024-07-29T22:01:37.000+08:00", "updated_at": "2024-07-29T22:01:37.000+08:00", "system": false, "noteable_id": 38517, "noteable_type": "MergeRequest", "resolvable": true, "is_reply": false, "noteable_iid": 18, "discussion_id": "996f57b8fdd5e62678b16f0ea4f91688405fa72f", "project": "sll_test00006/mr_test", "diff_file": "a.txt", "diff": "@@ -0,0 +1,0 @@\n+1\r\n", "archived": false, "review_categories": "分类", "review_categories_cn": "分类", "review_categories_en": "分类", "review_modules": "模块", "severity": "suggestion", "severity_cn": "建议", "severity_en": "Suggestion", "assignee": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "proposer": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "position": { "base_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be", "start_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be", "head_sha": "53c75fa88dc4e7d0b68d108b7f1ee0a5c4564f44", "old_path": "a.txt", "new_path": "a.txt", "position_type": "text", "new_line": 1 }, "resolved": false, "is_outdated": false } ], "project_id": 2111704470, "noteable_type": "MergeRequest", "project_full_path": "sll_test00006/mr_test", "a_mode": "0", "b_mode": "100644", "deleted_file": false, "new_file": true, "resolved": false, "archived": false, "review_categories": "分类", "review_categories_cn": "分类", "review_categories_en": "分类", "review_modules": "模块", "severity": "suggestion", "severity_cn": "建议", "assignee": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "proposer": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "merge_request_version_params": {}, "diff_file": "@@ -0,0 +1,0 @@\n+1\r\n", "added_lines": 2, "removed_lines": 0 }, "status": "success" }
状态码
状态码 |
描述 |
---|---|
200 |
OK |
错误码
状态码 |
错误码 |
错误信息 |
描述 |
处理措施 |
---|---|---|---|---|
400 |
CH.00401999 |
'body': The body is out of max length (8000 characters). |
检视意见内容超过8000字符 |
降低内容长度 |
400 |
CH.00401015 |
字符串不可包括表情包或生僻字等无法识别的字符。 |
unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符 |
删除特殊字符 |
405 |
CH.00406019 |
当前合并/变更请求不允许在合并后新增检视意见,请改变设置后再进行操作。 |
MR/CR已合并,不允许继续新增检视意见 |
设置->合并请求->勾选“允许合并请求合并或关闭后继续做代码检视和评论” |
404 |
CH.00406026 |
合并/变更请求额外属性未找到。 |
数据库未查询到MR/CR的额外信息 |
刷新页面重试 |
400 |
CH.00406029 |
当前合并/变更请求处于过程中,不能添加新的检视意见。 |
MR/CR正在合入 |
稍后重试 |